当记录的注册表项丢失时,操作系统中的某些内容被编码为回退以下设置:
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Themes\Personalize\
- 如果缺少
AppsUseLightTheme,则假定它是1
- 如果缺少
SystemUsesLightTheme,则假定为0
- ... 然后根据 this 值做出暗/亮 Taskbar/SystemTray 决策。
荣耀详情...
尽管全新的 Windows Home 安装默认为 Light 主题,但这些全新的安装程序也正确设置了注册表项,因此缺少注册表项和轻量任务栏的组合极不可能(而且可能是不可能的)。与此类似,研究现代操作系统可能——不正确地——暗示默认值来自文件C:\Windows\resources\Themes\aero.theme**,但不要被愚弄了!较旧的操作系统也没有差异化条目...更多内容如下。
Instinct 会建议 CurrentTheme 或 InstallTheme 注册表值将用作合理的后备值,但更改这些值似乎是出于历史目的,似乎并没有真正改变明暗主题。
reg query HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Themes /v InstallTheme
>>> returns the path to aero.theme
type %SystemRoot%\resources\Themes\aero.theme |find "SystemMode"
>>> returns SystemMode=dark
即使更改整台机器的 InstallTheme (HKEY_LOCAL_MACHINE) 也不会修改首选 SystemMode=dark 的行为(请注意,即使此条目在较旧的 Windows 10 版本中也不可用。例如,Windows 10 v1507 的主题文件中也没有这个条目)。
追逐aero.theme 也遇到了一些死胡同。尝试直接修改aero.theme因权限而失败,但是将aero.theme复制到桌面并将SystemMode=dark更改为SystemMode=light然后双击主题文件会使任务栏变白,但仅限于较新的Windows版本支持浅色主题。
所以,是的,我必须同意@strive-sun-msft,SystemUsesLightTheme 注册表项是最佳位置。测试时,甚至任务栏本身都会对此进行监控,删除它会将其重置为黑色。不幸的是,后备黑色任务栏颜色仍然是一个谜。我只能假设它被硬编码到任务栏本身。
此行为的另一种解决方法是在缺少注册表项的情况下再次运行aero.theme 文件,方法是重新安装它。在较新的 Windows 10 版本上,只需运行此文件将创建缺少的条目。不幸的是,这不适用于较旧的 Windows 10 版本,更糟糕的是,这将重置用户设置的任何自定义首选项。
因此,检测任务栏颜色的最小干扰方法是读取注册表,如果缺少键,只需假设 Windows 10 附带的主题仍然有效:深色任务栏,浅色 Windows。