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

6

Sob a chave do registro:

HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced

... há dois valores bem documentados que dizem respeito à exibição de arquivos e pastas ocultos no Windows Explorer.

A tecla Hidden mostra arquivos ocultos quando true e os oculta quando falsos.

A chave ShowSuperHidden é geralmente reconhecida como equivalente para arquivos "super-ocultos" (ou seja, protegidos / sistema); mostra arquivos super-ocultos quando true e os oculta quando false.

Dito isso, onde entra o valor SuperHidden ? Seu nome sugere que seria o análogo natural da chave Hidden , mas a documentação e o que ela faz é inexistente, até onde eu sei dizer.

Qual é o objetivo do valor SuperHidden e como ele difere de ShowSuperHidden ?

    
por Hashim 13.08.2017 / 04:04

1 resposta

10

ShowSuperHidden , como descobrimos , controla se arquivos super-ocultos (Hidden + System) são exibidos. Tanto quanto eu posso dizer, SuperHidden não controla nada e sua existência é provavelmente um erro de programação.

Usando o Process Monitor , observei ler e gravar nesses valores do Registro. A única interação com 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 super-ocultos forem exibidos, 0 caso contrário. Nunca foi lido, mesmo quando terminei e reiniciei o Explorer.

Procmon fornece a pilha que levou a uma operação monitorada (clique duas vezes em um evento e consulte a guia Stack), então examinei os arquivos DLL envolvidos usando IDA v5.0 . O único relevante com uma menção de SuperHidden foi shell32.dll . A função CachedShellState::SaveAdvancedSettings emite uma gravação do Registro para esse valor e outros nessa chave, confirmando as configurações atuais da visualização.

OExploreraparentementechamaessafunçãoantesdeexibiraguiaExibir.IssoprovavelmenteéfeitoparagarantirqueoRegistrosejaconsistentecomasconfiguraçõesatuaisnamemóriaantesdecarregaroestadoatualdasopçõesdeVisualização,emboraeuadmitoquenãoestou100%certonoraciocínio.Dequalquerforma,ashell32.dllfunctionCachedShellState::_GetAdvancedSettingscorrespondenteemiteumaleituradovalorcorreto,ShowSuperHidden.

EssaslistagensdedesmontagemsãodaversãodoWindows7dessaDLL.NoWindows10,SuperHiddennãoexistenoRegistroeCachedShellState::SaveAdvancedSettingsgravaemShowSuperHidden.

Portanto, concluo que, ao programar a versão dessa função que vem com o Windows 7, um desenvolvedor omitiu por engano o Show em 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 está quebrada por este erro, pois consulta a entrada ValueName 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.

    
por 13.08.2017 / 21:17