.hd-box .hd-fr

IT之家学院:如何在控制面板中添加可执行文件

2018-07-10 20:32IT之家(昵称违规0817)0评原创

你在控制面板中看到的每一个项目都是可执行文件。所以就像我在《IT之家学院:在控制面板中添加“编辑注册表”的小技巧 》写的那样,你可以把Steam注册为控制面板项目,也可以把QQ注册为控制面板项目。

这里我以在控制面板中添加《阴阳师》为例。

第一步,生成一个GUID,这个GUID是作为这个控制面板项目的唯一标识,不想编用这个网站(安全)就完全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)来调用这个项目。当然,可以像我上篇文章那样,干脆不写。

 System.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

启动命令就不用说了,大家都懂。注意写注册表代码别忘了转义字符。

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

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

位于程序页中的嘤阳师

用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

由于我曾经有三篇首发在IT之家的原创文章被转载至不同的媒体网站、但是没有注明出处甚至给IT之家的水印打上马赛克,所以我要以我个人的名义敬告各位转载文章却又习惯性删除出处或给水印打码的媒体网站的编辑朋友们,请你们尊守职业道德,尊重IT之家责任编辑和我本人的劳动成果。

本文首发于IT之家,欢迎各位媒体朋友转载本教程,而且转载之前不需要经我个人同意,但请务必不要删除文章来源和包含IT之家水印的内容或以自己的名义重新发布。感谢各位的理解和支持。

广告声明:文内含有的对外跳转链接(包括不限于超链接、二维码、口令等形式),用于传递更多信息,节省甄选时间,结果仅供参考,IT之家所有文章均包含本声明。

下载IT之家APP,分享赚金币换豪礼
大家都在买广告
热门评论
查看更多评论