Qual é a diferença entre os valores de registro ShowSuperHidden e SuperHidden?

Qual é a diferença entre os valores de registro ShowSuperHidden e SuperHidden?

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 Hiddenchave mostra arquivos ocultos quando verdadeira e os oculta quando falsa.

A ShowSuperHiddenchave é 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 SuperHiddenentra o valor? Seu nome sugere que seria o análogo natural da Hiddenchave, mas a documentação sobre ela e o que ela faz é inexistente, pelo que pude perceber.

Qual é a finalidade do SuperHiddenvalor e como ele difere de ShowSuperHidden?

Responder1

ShowSuperHidden,como descobrimos, controla se os arquivos superocultos (Ocultos + Sistema) são exibidos. Pelo que sei, SuperHiddennã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 SuperHiddenfoi 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 SuperHiddenfoi shell32.dll. A CachedShellState::SaveAdvancedSettingsfunção emite uma gravação de registro nesse valor e outras naquela chave, confirmando as configurações de visualização atuais.

escrevendo SuperHidden em SaveAdvancedSettings

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.dllfunção correspondente CachedShellState::_GetAdvancedSettingsemite uma leitura do valor correto, ShowSuperHidden.

lendo ShowSuperHidden em _GetAdvancedSettings

Essas listagens de desmontagem são da versão do Windows 7 dessa DLL. No Windows 10, SuperHiddennão existe no Registro e CachedShellState::SaveAdvancedSettingsgrava em ShowSuperHidden.

O Windows 10 grava em ShowSuperHidden em SaveAdvancedSettings

Portanto, concluo que ao programar a versão dessa função que acompanha o Windows 7, um desenvolvedor omitiu por engano o Showin 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 ValueNameentrada 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.

informação relacionada