Has*_*ziz 10 windows windows-registry windows-7 windows-explorer
在注册表项下:
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced
Run Code Online (Sandbox Code Playgroud)
...有两个有据可查的值与在 Windows 资源管理器中显示隐藏文件和文件夹有关。
该Hidden键在 true 时显示隐藏文件,在 false 时隐藏它们。
该ShowSuperHidden密钥通常被认为是“超级隐藏”(即受保护/系统)文件的等价物;它在 true 时显示超级隐藏文件,在 false 时隐藏它们。
也就是说,SuperHidden价值从何而来?它的名字表明它将是Hidden密钥的自然模拟,但据我所知,关于它的文档及其作用是不存在的。
该SuperHidden值的目的是什么,它与ShowSuperHidden有何不同?
Ben*_*n N 13
ShowSuperHidden,正如我们发现的,控制是否显示超级隐藏(隐藏 + 系统)文件。据我所知,SuperHidden什么都控制不了,它的存在可能是一个编程错误。
使用Process Monitor,我观察了对这些注册表值的读取和写入。SuperHidden当用户打开“文件夹选项”对话框的“查看”选项卡时,唯一的交互是写入。如果显示超级隐藏文件,它会收到 1,否则会收到 0。即使我终止并重新启动 Explorer,它也从未被读取过。
Procmon 提供导致受监控操作的堆栈(双击事件并查阅堆栈选项卡),因此我使用IDA v5.0检查了涉及的 DLL 文件。唯一提及的相关内容SuperHidden是shell32.dll。该CachedShellState::SaveAdvancedSettings函数向该值和该键中的其他值发出注册表写入,提交当前视图设置。
资源管理器显然在显示视图选项卡之前调用了该函数。这样做可能是为了在加载视图选项的当前状态之前确保注册表与当前的内存设置一致,尽管我承认我不是 100% 确定推理。无论如何,相应的shell32.dll函数会CachedShellState::_GetAdvancedSettings从正确的值ShowSuperHidden.
这些反汇编列表来自该 DLL 的 Windows 7 版本。在 Windows 10 中,SuperHidden注册表中不存在,并CachedShellState::SaveAdvancedSettings写入ShowSuperHidden.
因此,我得出的结论是,在对 Windows 7 附带的该功能版本进行编程时,开发人员错误地省略了Showin ShowSuperHidden,但该错误在 Windows 10 的过程中得到了纠正。
出于好奇,“文件夹选项”对话框不会被此错误破坏,因为它会在ValueName此处查询每个设置项下的条目:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced\Folder
Run Code Online (Sandbox Code Playgroud)
计算出该分支其他部分的重要性留给读者作为(有趣!)练习。
| 归档时间: |
|
| 查看次数: |
7538 次 |
| 最近记录: |