我正在尝试从命令行/批处理文件/注册表补丁/PowerShell脚本/VBS/C#/C++显示和配置Win 10任务栏上的快速启动工具栏。在网上搜索后,我能够完成三个步骤中的两个:
"%USERPROFILE%\AppData\Roaming\Microsoft\Internet Explorer\Quick Launch"
使用我希望在快速启动工具栏中显示的 .lnk 文件预先填充文件夹 - 这很容易。- 通过将特定 blob 添加到
HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Streams\Desktop
键、TaskbarWinXP
值并重新启动资源管理器以使更改生效,强制快速启动在任务栏上显示。没有记录 blob 的格式,但这与我无关 - 我只需要确保任务栏只包含快速启动工具栏而没有其他工具栏,所以我可以在测试机器上准备任务栏,导出 blob,然后将其导入目标计算机上的注册表。快速启动工具栏确实显示在任务栏上,并显示了与 .lnk 文件对应的所有链接。不是最优雅的方式,但它有效。
更新 0:实际上它并没有真正起作用 - 帐户名称在 blob 中被硬编码为快速启动文件夹路径的一部分,因此当从测试机器移动到目标机器时,如果用户名,blob 将无法工作与目标机器不同。我想我无论如何都需要对 blob 格式进行逆向工程以生成正确的格式。
- 但是,这就是我卡住的地方,快速启动工具栏需要以编程方式进一步配置,特别是:
- 隐藏工具栏标题
- 隐藏链接图标的单个文本
- 将工具栏一直向左移动,使其位于“开始”按钮旁边
我找不到任何食谱。
这些设置并没有存储在HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Streams\Desktop
key、TaskbarWinXP
value blob中,我在手动更改前后对这个blob的不同版本进行了二进制比较,它们是相同的。它们必须存储在其他地方。
更新 1:我错了,这些值存储在 blob 中,但Windows 资源管理器不会立即将它们提交到注册表。似乎资源管理器将这些值保存在 RAM 中,并且仅在正常终止时(例如在注销或重新启动期间)将它们提交到注册表。如果您通过 killtask 终止 Explorer,它不会提交这些更改。
我还尝试使用 SysInternals procmon64 监视系统,同时使用鼠标手动执行这三个操作。在这种手动操作期间,进程监视器不会检测到任何有意义的和相关的注册表或文件活动,只有一堆背景噪音。但是资源管理器必须将这些更改的设置存储在某个地方......我错过了什么?
更新 2:正如我在更新 1 中提到的,我在手动创建工具栏时看不到任何注册表流量的原因是资源管理器将注册表提交推迟到正常关闭。
所以,在所有更新之后,我的情况完全相反:我不再遇到第 3 项的问题,但我确实需要知道存储在注册表HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Streams\Desktop
项TaskbarWinXP
value 中的 blob 的格式。或者一个合适的 API 来创建这样的 blob。有人有任何指示吗?