Sob a chave de registro:
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced
...existem dois valores bem documentados que dizem respeito à exibição de arquivos e pastas ocultos no Windows Explorer.
A Hidden
chave mostra arquivos ocultos quando verdadeira e os oculta quando falsa.
A ShowSuperHidden
chave é geralmente reconhecida como equivalente para arquivos "superocultos" (ou seja, protegidos/de sistema); ele mostra arquivos superocultos quando verdadeiro e os oculta quando falso.
Dito isto, onde SuperHidden
entra o valor? Seu nome sugere que seria o análogo natural da Hidden
chave, mas a documentação sobre ela e o que ela faz é inexistente, pelo que pude perceber.
Qual é a finalidade do SuperHidden
valor e como ele difere de ShowSuperHidden
?
Responder1
ShowSuperHidden
,como descobrimos, controla se os arquivos superocultos (Ocultos + Sistema) são exibidos. Pelo que sei, SuperHidden
não controla nada e sua existência é provavelmente um erro de programação.
UsandoMonitor de Processo, observei leituras e gravações nesses valores do Registro. A única interação SuperHidden
foi uma gravação quando o usuário abriu a guia Exibir da caixa de diálogo Opções de pasta. Ele recebeu 1 se arquivos superocultos forem exibidos, 0 caso contrário. Nunca foi lido, mesmo quando terminei e reiniciei o Explorer.
O Procmon fornece a pilha que levou a uma operação monitorada (clique duas vezes em um evento e consulte a aba Pilha), então examinei os arquivos DLL envolvidos usandoIDA v5.0. O único relevante com menção SuperHidden
foi shell32.dll
. A CachedShellState::SaveAdvancedSettings
função emite uma gravação de registro nesse valor e outras naquela chave, confirmando as configurações de visualização atuais.
Aparentemente, o Explorer chama essa função antes de mostrar a guia Exibir. Provavelmente isso é feito para garantir que o Registro seja consistente com as configurações atuais da memória antes de carregar o estado atual das opções de visualização, embora eu admita que não estou 100% certo sobre o raciocínio. De qualquer forma, a shell32.dll
função correspondente CachedShellState::_GetAdvancedSettings
emite uma leitura do valor correto, ShowSuperHidden
.
Essas listagens de desmontagem são da versão do Windows 7 dessa DLL. No Windows 10, SuperHidden
não existe no Registro e CachedShellState::SaveAdvancedSettings
grava em ShowSuperHidden
.
Portanto, concluo que ao programar a versão dessa função que acompanha o Windows 7, um desenvolvedor omitiu por engano o Show
in ShowSuperHidden
, mas o erro foi corrigido no caminho para o Windows 10.
Para os curiosos, a caixa de diálogo Opções de pasta não é interrompida por este erro porque consulta a ValueName
entrada em cada chave de configuração aqui:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced\Folder
Trabalhar o significado das outras partes desse ramo é deixado como um exercício (divertido!) para o leitor.