主题 : 如何在控制面板中添加可执行文件
千山同一月 万户尽皆春 千江有水千江月 万里无云万里天
级别: 总版主

UID: 998
精华: 0
发帖: 604963
威望: 528524 点
无痕币: 3089 WHB
贡献值: 0 点
在线时间: 61687(时)
注册时间: 2008-12-25
最后登录: 2024-03-29

0 如何在控制面板中添加可执行文件

你在控制面板中看到的每一个项目都是可执行文件。所以就像我在《IT之家学院:在控制面板中添加“编辑注册表”的小技巧嬀/url]》写的那样,你可以把Steam注册为控制面板项目,也可以把QQ注册为控制面板项目。
这里我以在控制面板中添加《阴阳师》为例。
第一步,生成一个GUID,这个GUID是作为这个控制面板项目的唯一标识,不想编用[url=https://www.guidgen.com/]这个网站
(安全)就完全OK。这里我用{86506789-0817-40bd-9161-9b68d19b01c0}作为阴阳师的GUID。
第二步,把这个GUID作为项目的名字写进控制面板的命名空间:

Computer\HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\ControlPanel\NameSpace\
中新建一个名为{86506789-0817-40bd-9161-9b68d19b01c0}的子键,这个键的默认值(REG_SZ)的数据理是可选的,但个人建议最好写上,方便查找注册表项。所以有如下代码
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\ControlPanel\NameSpace\{86506789-0817-40bd-9161-9b68d19b01c0}]
@="为了寮和崽的美好未来,肝杯!"
;IT之家原创内容
第三步在
Computer\HKCR\CLSID\
中把这个项目的一些有用的信息都写进去,所以有如下代码:
[HKEY_CLASSES_ROOT\CLSID\{86506789-0817-40bd-9161-9b68d19b01c0}]
@="嘤阳师"
"InfoTip"="日大蛇、刷御魂,或维护你的肝脏"
"System.ControlPanel.Category"="5,8"
"System.ApplicationName"="netease.onmyoji"
;IT之家原创内容
我来重点讲一下这里。
这个键的默认值(REG_SZ)的数据是你的项目在控制面板中显示的名字。为了有说明性,在例子中我把阴阳师写做“嘤阳师”。
InfoTip(REG_SZ或REG_EXPAND_SZ):这个值用于在鼠标悬停于项目上时显示提示信息。这个值的类型可以是字符串或者多值字符串,值的数据是包含MUI String Table的资源模块名称和目标字符串在String Table中对应的ID,语法是:
@模块所在路径\模块名称.exe,-ID或? @模块所在路径\模块名称.dll,-ID
也可以直接用环境变量作为路径的一部分。或者你嫌麻烦直接在这个值的数据中写一段自己的话上去,就像例子中的那样。
LocalizedString(REG_SZ或REG_EXPAND_SZ):可选值,用于为项目名本地化用的,而且需要程序本身有String Table才行,具体语法和InfoTip值的语法一样自己强行添加其他程序的话就不用写这条了。
System.ApplicationName(REG_SZ):用于给项目指定一个规范名称(Canonical Names),有了这个规范名可以做各种操作,比如最简单的隐藏这个项目、通过API或者命令行(control exe /name System.ApplicationName)来调用这个项目。当然,可以像我上篇文章那样,干脆不写。
匀礀猀琀攀洀.ControlPanel.Category(REG_SZ):给这个项目指派一个分组。如果你想要这个项目出现在不同的分组中,你可以为写上不同的分组ID,中间用英文逗号隔开。就像例子中那样,我写了5,8,则“嘤阳师”将会出现在“系统和安全”、“程序”分组中。

就像这张图中,有8个分组,每个分组都有一个ID。但是在Windows Vista时代,控制面板中的分组多达11个。
接下来就说说控制面板中的各个ID都代表哪个分组(由于自Windows 7以后,分组信息基本没什么变化,故以下Windows 7 Windows 8和Windows 10统称“Windows 7及以后的版本”)。

注:
括号中的“合并至”表示:例如如果分组ID指定为10,则该项目在Windows 7中会出现在系统和安全分组中。
*所有未指定System.ControlPanel.Category值的项目均会默认出现在此分组中。
**Windows XP Service Pack 2及之后的版本才支持。
***仅在移动设备中出现。
这个值的问题大概就这么多。
还有一个System.Software.TasksFileUrl这个值就不说了,值指向声明Task Link的XML文档,基本上就只有创建搜索关键字和任务链接(如下图所示的蓝字)的用处,需要创建XML文档,也没啥太大用处还麻烦,如果感兴趣可以参考相关文档。

最后一步:为这个项目设置图标和启动命令。
我就直接粘代码了,大家应该都能看懂。
[HKEY_CLASSES_ROOT\CLSID\{86506789-0817-40bd-9161-9b68d19b01c0}\DefaultIcon]
@="D:\\Onmyoji\\Launcher.exe"
;IT之家原创内容
[HKEY_CLASSES_ROOT\CLSID\{86506789-0817-40bd-9161-9b68d19b01c0}\Shell\Open\command]
@="D:\\Onmyoji\\Launcher.exe"
DefaultIcon的默认值(REG_SZ或REG_EXPAND_SZ)可以直接引用那个模块的图标就好,就像例子里那样,你可以直接写这个。如果需要引用模块内的其他图标的话,可以像InfoTip值那样,只不过没有“@”,语法如下
模块所在路径\模块名称.exe,-资源ID或?模块所在路径\模块名称.dll,-资源ID
启动命令就不用说了,大家都懂。注意写注册表代码别忘了转义字符。
千山同一月 万户尽皆春 千江有水千江月 万里无云万里天
级别: 总版主

UID: 998
精华: 0
发帖: 604963
威望: 528524 点
无痕币: 3089 WHB
贡献值: 0 点
在线时间: 61687(时)
注册时间: 2008-12-25
最后登录: 2024-03-29

接下来我要试一下效果。写好注册表文档、导入。

位于系统和安全页中的嘤阳师

位于程序页中的嘤阳师

用command测试规范名称,通过。
好了,接下来大家就可以自己添加Steam或者QQ了。
虽然这个教程可能没啥太多的实用价值,但是和人装个那啥或者在之家水点金币还是可以的。想要解除注册的话根据上面的键写个删除那两个GUID的键即可。例如在本例中,想要删除痒痒鼠项目的话,代码如下:
Windows Registry Editor Version 5.00
[-HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\ControlPanel\NameSpace\{86506789-0817-40bd-9161-9b68d19b01c0}]
[-HKEY_CLASSES_ROOT\CLSID\{86506789-0817-40bd-9161-9b68d19b01c0}]
教程就到这里了

本文参考文献源于MSDN Library,如需获取更精准的描述请参阅原文档(英文)。更多技术文档请参看MSDN Library和Microsoft Docs
千山同一月 万户尽皆春 千江有水千江月 万里无云万里天
级别: 总版主

UID: 998
精华: 0
发帖: 604963
威望: 528524 点
无痕币: 3089 WHB
贡献值: 0 点
在线时间: 61687(时)
注册时间: 2008-12-25
最后登录: 2024-03-29

这个可以看看,了解一下。
级别: 十方秋水

UID: 88
精华: 0
发帖: 129700
威望: 220794 点
无痕币: 105768 WHB
贡献值: 0 点
在线时间: 51569(时)
注册时间: 2008-03-18
最后登录: 2024-03-29

谢谢楼主的分享。
Total 0.038072(s) query 4, Time now is:03-29 17:03, Gzip enabled 粤ICP备07514325号-1
Powered by PHPWind v7.3.2 Certificate Code © 2003-13 秋无痕论坛