O próximo VBScript deve fazer o trabalho:
option explicit
On Error GoTo 0
Dim sResult: sResult = Wscript.ScriptName ''' debugging
Const HKEY_CURRENT_USER = &H80000001
Dim strComputer, strKeyPath, strValName, dwValue, arrValues, objReg, WshShell
arrValues = Array (" unknown", " show hidden files", " hide hidden files" )
strComputer = "."
Set objReg=GetObject("winmgmts:\" & strComputer & "\root\default:StdRegProv")
strKeyPath = "Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced"
strValName = "hidden"
objReg.GetDWORDValue HKEY_CURRENT_USER, strKeyPath, strValName, dwValue
If Not (dwValue = 1 OR dwValue = 2) Then dwValue = 0
sResult = sResult & vbNewLine & CStr( dwValue) & arrValues( dwValue) ''' debugging
dwValue = (dwValue Mod 2) + 1 ' switch value 1 <--> 2
sResult = sResult & " -> " & CStr( dwValue) & arrValues( dwValue) ''' debugging
objReg.SetDWORDValue HKEY_CURRENT_USER, strKeyPath, strValName, dwValue
set WshShell = WScript.CreateObject("WScript.Shell")
WScript.Sleep 30
WshShell.SendKeys "{F5}" ' refresh
Wscript.Echo sResult ''' debugging
Wscript.Quit
E o seguinte arquivo de configuração do registro adiciona a funcionalidade de script acima para clicar com o botão direito do mouse no menu de contexto para qualquer pasta fundo no File Explorer (e também para o plano de fundo da área de trabalho).
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\Directory\background\shell\Toggle Hidden Files]
[HKEY_CLASSES_ROOT\Directory\background\shell\Toggle Hidden Files\command]
@="C:\Windows\System32\wscript.exe \"D:\VB_scripts\SU\1088687.vbs\""
Por favor, acima do arquivo .reg
, personalize os próximos itens para se adequarem às suas circunstâncias:
- nome do item de menu
Toggle Hidden Files
e - caminho completo para o script
D:\VB_scripts\SU\1088687.vbs
(observe barras duplas invertidas).
Para verificar a exatidão:
==> reg query "HKCR\Directory\background\shell\Toggle Hidden Files" /s
HKEY_CLASSES_ROOT\Directory\background\shell\Toggle Hidden Files\command
(Default) REG_SZ C:\Windows\System32\wscript.exe "D:\VB_scripts\SU88687.vbs"
==>
Além disso, você pode remover todas as linhas contendo sResult
acima do VBscript; então o roteiro fará o trabalho silenciosamente.