¿Cuál es la diferencia entre los valores de registro ShowSuperHidden y SuperHidden?

¿Cuál es la diferencia entre los valores de registro ShowSuperHidden y SuperHidden?

Bajo la clave de registro:

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

...hay dos valores bien documentados relacionados con la visualización de archivos y carpetas ocultos en el Explorador de Windows.

La Hiddenclave muestra archivos ocultos cuando es verdadera y los oculta cuando es falsa.

La ShowSuperHiddenclave generalmente se reconoce como su equivalente para archivos "súper ocultos" (es decir, protegidos/del sistema); muestra archivos súper ocultos cuando es verdadero y los oculta cuando es falso.

Dicho esto, ¿dónde SuperHiddenentra el valor? Su nombre sugiere que sería el análogo natural de la Hiddenclave, pero hasta donde yo sé, la documentación sobre ella y lo que hace no existe.

¿Cuál es el propósito del SuperHiddenvalor y en qué se diferencia de ShowSuperHidden?

Respuesta1

ShowSuperHidden,como descubrimos, controla si se muestran los archivos súper ocultos (Ocultos + Sistema). Hasta donde yo sé, SuperHiddenno controla nada y su existencia probablemente sea un error de programación.

UsandoMonitor de proceso, Observé lecturas y escrituras en estos valores del Registro. La única interacción SuperHiddenfue una escritura cuando el usuario abrió la pestaña Ver del cuadro de diálogo Opciones de carpeta. Recibió un 1 si se muestran archivos súper ocultos, 0 en caso contrario. Nunca se leyó, incluso cuando terminé y reinicié Explorer.

Procmon proporciona la pila que condujo a una operación monitoreada (haga doble clic en un evento y consulte la pestaña Pila), así que examiné los archivos DLL involucrados usandoAIF v5.0. El único relevante con una mención SuperHiddenfue shell32.dll. La CachedShellState::SaveAdvancedSettingsfunción emite una escritura de Registro en ese valor y otros en esa clave, confirmando la configuración de vista actual.

escribiendo SuperHidden en SaveAdvancedSettings

Explorer aparentemente llama a esa función antes de mostrar la pestaña Ver. Probablemente esto se haga para asegurarse de que el Registro sea consistente con la configuración actual en memoria antes de cargar el estado actual de las opciones de Ver, aunque admito que no estoy 100% seguro del razonamiento. De todos modos, la shell32.dllfunción correspondiente CachedShellState::_GetAdvancedSettingsemite una lectura del valor correcto, ShowSuperHidden.

leyendo ShowSuperHidden en _GetAdvancedSettings

Estos listados de desensamblado son de la versión de Windows 7 de esa DLL. En Windows 10, SuperHiddenno existe en el Registro y CachedShellState::SaveAdvancedSettingsescribe en ShowSuperHidden.

Windows 10 escribe en ShowSuperHidden en SaveAdvancedSettings

Por lo tanto, concluyo que al programar la versión de esa función que viene con Windows 7, un desarrollador omitió por error el Showin ShowSuperHidden, pero el error se corrigió en el camino hacia Windows 10.

Para los curiosos, el cuadro de diálogo Opciones de carpeta no se ve interrumpido por este error porque consulta la ValueNameentrada debajo de cada clave de configuración aquí:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced\Folder

Descubrir el significado de las otras partes de esa rama se deja como un ejercicio (¡divertido!) para el lector.

información relacionada