c# - 使用 REGValue 在任务栏中创建 Windows 工具栏
问题描述
我目前正在进行演示部署,其中需要用户自定义工具栏。
通常,您可以直接以用户身份创建这些工具栏,然后右键单击任务栏,然后创建新的工具栏。不像许多人建议由其他值和文件夹创建的固定项目。
我做了一些研究,结果发现在脚本或程序中做到这一点并不容易(我主要使用 C# 和 PowerShell)。我已经发现以下 REG-Binary 键:
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Streams\Desktop
保存我要重写的信息,但我无法解码此值或为新映射创建新值。我也尝试了导出导入的东西,这很麻烦,因为这些值在某种程度上受用户名(因为它在用户上下文中)和创建设置的机器名称的影响。
以前有没有人使用过这些值,并且可以深入了解微软是如何编码它们的?它似乎类似于游戏中的旧保存状态,其中根据字节更改不同的状态处于活动状态。这些是我到目前为止自己能弄清楚的内部部分。
我很想构建一个工具来对 TaskbarWinXP 键中的设置进行解码和编码,并使其开源,我们都可以从中受益。
解决方案
解码它并不容易,那里有一些魔力。如果您在 reg 中更改计算机名称,它将不起作用,因为在 reg 中它被编码为计算机名称的大小。但有一个解决方案。
如您所说,首先创建工具栏将其放在您想要的位置,然后保存 reg :
reg export HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Streams\Desktop taskbar_toolbar_Backup.reg
如果你也想保存任务栏的位置(左停靠,底部......等),那么也保存这个:
REM change StuckRects2 to StuckRects3 if you are in win10
reg export HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\StuckRects2 taskbar_position.reg
现在是重要的部分,您当然会将 reg 复制到另一台计算机,但它必须是相同的操作系统(xp 到 xp,win 7 到 win 7 ...等)创建所需的文件夹然后运行两个 REG,但它会不起作用,因为资源管理器将再次重置注册表。我找到的解决方案是先关闭资源管理器,然后运行 reg,然后再次运行资源管理器,瞧,它可以工作,windows 将接受另一台 PC 的计算机名称,并在下次登录时自动更新,所以不用担心。
@echo off
REM mkdir path\to\folder
taskkill /f /im explorer.exe
reg import Taskbar-Toolbars-Backup.reg"
reg import taskbar_position.reg
start explorer.exe
就这些。
现在,如果文件夹路径将得到修复,那么您就可以开始了,但是如果您想在其他 PC 上实用地更改它,那么方法如下:
我找不到任何解决方案,所以我做了这个解决方法:首先我将任何文件夹的快捷方式创建到永久固定路径,例如,我将保存到 system32 或主文件夹的快捷方式。然后我们从头开始本指南,但不是使用要转换为工具栏的文件夹,而是将我们现在创建的快捷方式放在任务栏中(它将像文件夹一样工作并将其内容显示为一个文件夹就可以了)。现在您可以保存 reg 值的备份并将 reg 复制到其他 pc 并继续执行我之前解释的步骤。
如您所见,工具栏现在指向快捷方式,因此可以在任何计算机上使用相同的注册,您只需编辑快捷方式而不是注册。创建和编辑快捷方式很容易,并且有很多实用的指南和工具,所以我不会解释它。
当然,现在您必须为每个操作系统准备一个 reg,一个用于 xp,一个用于 win 7,另一个用于 win8.1,一个用于 win10,从现在开始您可以在任何地方使用这些 reg,您只需更改快捷方式
还有一件事; 如果您将快捷方式保存在 D:\ 中,现在您想将其更改为 C:\,会发生什么情况?您可以为此轻松编辑 reg,您只需更改两个字母(一个十六进制),您可以查看regedit
二进制作为十进制,然后找到字母的位置,现在在 reg 文件中更改这两个字母,mydrive
从现在开始,您可以通过替换所需驱动器的十六进制来轻松地更改注册mydrive
。当然,您必须尊重保存在注册中的相同路径,例如,如果您将快捷方式保存在注册中,d:\path\to\folder
那么您可以更改D
驱动C
器但使用相同的文件夹结构:\path\to\folder
,所以它变成c:\path\to\folder
我认为有了这个,就没有必要解密该 reg 中的二进制文件,直到现在还没有人做过(而另一个 regStuckRects2
他们解密了它;但是我认识的人还没有这样做)
资源
- 强制任务栏工具栏到所有用户 链接
- 在开始菜单和带有 GPO链接的 WINDOWS Explorer 中显示计算机名称
推荐阅读
- symfony - Symfony 返回响应,然后做繁重的工作
- android - 如何序列化 Intent 实例?
- c# - 为什么我的 RabbitMQ 消费者(看似)一次消费所有消息?
- python - 为什么项目不能部署在heroku上
- android - react-native-calendars 日历高度不变
- tfs - 升级/迁移后如何修复 TFS 分析数据库中的 TFS GUID 名称?
- javascript - 如何查看消息?节点.js
- reactjs - 成功 HTTP Post 请求后不显示模态
- aws-lambda - Lambda 打开 RDS 代理连接
- excel - 删除 Excel VBA 中收件人字段中的重复项