ShowSuperHidden
, как мы обнаружили , управляет отображением сверхскрытых (скрытых + системных) файлов. Насколько я могу судить, SuperHidden
ничего не контролирует, и его существование, вероятно, является ошибкой программирования.
Используя Process Monitor, я наблюдал чтение и запись в эти значения реестра. Единственным взаимодействием с SuperHidden
была запись, когда пользователь открыл вкладку «Вид» в диалоговом окне «Свойства папки». Он получил 1, если отображаются супер-скрытые файлы, 0 в противном случае. Он никогда не читался, даже когда я заканчивал и перезапускал Проводник.
Procmon предоставляет стек, который привел к отслеживаемой операции (дважды щелкните событие и обратитесь к вкладке Stack), поэтому я проверил DLL-файлы, связанные с использованием IDA v5.0. Единственный соответствующий с упоминанием SuperHidden
был shell32.dll
. Функция CachedShellState::SaveAdvancedSettings
выполняет запись в реестр для этого значения и других в этом ключе, фиксируя текущие настройки представления.
Обозреватель, по-видимому, вызывает эту функцию перед отображением вкладки «Вид». Это, вероятно, сделано для того, чтобы убедиться, что реестр соответствует текущим настройкам в памяти перед загрузкой текущего состояния параметров просмотра, хотя я признаю, что не уверен на 100% в рассуждениях. В любом случае соответствующая функция shell32.dll
CachedShellState::_GetAdvancedSettings
выдает чтение из правильного значения ShowSuperHidden
.
Эти списки разборки взяты из Windows 7 версии этой DLL. В Windows 10 SuperHidden
не существует в реестре, и CachedShellState::SaveAdvancedSettings
записывает в ShowSuperHidden
.
Поэтому я прихожу к выводу, что при программировании версии этой функции, которая поставляется с Windows 7, разработчик по ошибке пропустил Show
в ShowSuperHidden
, но ошибка была исправлена на пути к Windows 10.
Для любопытных, диалоговое окно «Параметры папки» не нарушается этой ошибкой, потому что он обращается к записи ValueName
под каждым ключом настройки здесь:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced\Folder
Выяснение значения других частей этой ветки оставлено как (весело!) упражнение для читателя.