VBS. Как спрятать скрытые файлы и обновить текущую папку
Задача:
Необходимо спрятать/показать скрытые файлы и папки, то есть выполнить аналог действия, получаемого при установке галочек «Скрывать защищенные системные файлы» и/или «Показывать скрытые файлы, папки и диски» в Параметрах папок.
После чего необходимо обновить ткущую папку, чтобы сразу были видны произведенные изменения, то есть выполнить аналог нажатия кнопки F5 (Меню «Вид» -> «Обновить»).
Решение:
Скрипт проверяет текущее состояние ключа «Показывать скрытые файлы, папки и диски» и, в зависимости от этого, либо включает либо выключает параметры «Скрывать защищенные системные файлы» и «Показывать скрытые файлы, папки и диски», после чего обновляет текущую папку.
Код: Выделить всё
'Отключаем контроль ошибок
On Error Resume Next
'За отображение скрытых файлов, папок и дисков отвечает ключ реестра HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced\Hidden
Hidden = "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced\Hidden"
'За отображение защищенных системных файлов отвечает ключ реестра HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced\ShowSuperHidden
SuperHidden = "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced\ShowSuperHidden"
Set WshShell = WScript.CreateObject("WScript.Shell")
'Получаем текущее состояние отображения скрытых файлов, папок и дисков из реестра
CurrentState = WshShell.RegRead(Hidden)
'Если параметр «[b][i]Не показывать скрытые файлы, папки и диски[/i][/b]» установлен (то есть если файлы, папки и диски скрыты),то
If CurrentState = 2 Then
'Включаем параметр «Показывать скрытые файлы, папки и диски» (то есть показываем скрытые файлы, папки и диски)
WshShell.RegWrite Hidden, 1, "REG_DWORD"
'Отключаем параметр «Скрывать защищенные системные файлы» (то есть показываем защищенные системные файлы)
WshShell.RegWrite SuperHidden, 1, "REG_DWORD"
'Иначе
Else
'Включаем параметр «Не показывать скрытые файлы, папки и диски» (то есть скрываем скрытые файлы, папки и диски)
WshShell.RegWrite Hidden, 2, "REG_DWORD"
'Включаем параметр «Скрывать защищенные системные файлы» (то есть скрываем защищенные системные файлы)
WshShell.RegWrite SuperHidden, 0, "REG_DWORD"
End If
'Обновляем текущую папку, имитируя нажатие клавиши «F5»
WshShell.SendKeys("{F5}")
За основу скрипта взят распространенный пример «How to show/hide hidden files with a vb script»