我们注意到,在安装了某些软件,例如360安全卫士后,Windows 10控制面板中就会自动多出一个“360强力卸载”工具。那么,它是如何被添加进来的?如果我们要将自己常用的注册表编辑器或其他工具加入控制面板,该如何实现?与此相反的是,还有一些系统组件本该存在于控制面板中,我们却在某些电脑的控制面板中找不到它们的身影,这些项目又是如何被隐藏的呢?下面我们解密这个过程。
1. 控制面板 程序入驻任我行
我们知道,一个文件类型、对象或系统组件要“落户”于Windows注册表,必须要有对应于该项目的唯一标识编号。Windows注册表是使用CLSID项来定义项目唯一性的(CLSID即Class ID的缩写)。由于Windows中通常采用GUID代码代替Class ID,因此,我们只需为“注册表编辑器”指定一组GUID代码,即可为该系统组件在注册表中提供唯一性标识。GUID全称Globally Unique Identifier,意为“全局唯一标识符”,是一种由算法生成的唯一标识数字串。GUID的格式为“xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx”,其中每个x是0-9或a-f范围内的一个十六进制数。
由于手动编制上述代码太过复杂,因此我们可以利用微软GuidGen tool基于Web的GUID在线服务网站(https://www.guidgen.com/)自动生成这样的代码。首先访问上述网站,点击Generate new GUID按钮,便会生成一组GUID代码。本例中,我们使用其自动生成的一组代码e054cbd2-94e6-4564-a35b-29e29fb439d2,作为“注册表编辑器”工具在注册表中的标识代码。
(图1)
接下来,需要将上述GUID代码添加到注册表的相关分支中。
右键单击“开始”按钮并选择“运行”,输入REGEDIT回车,启动注册表编辑器。依次定位到“HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\ControlPanel\NameSpace”。右键单击NameSpace项,然后选择“新建→项”,在其下新建一个子项,并将其命名为{e054cbd2-94e6-4564-a35b-29e29fb439d2},然后将其下“默认”的“数值数据”值修改为“注册表编辑器”。
(图2)
之后,定位到注册表编辑器“HKEY_CLASSES_ROOT\CLSID”分支,同样新建{e054cbd2-94e6-4564-a35b-29e29fb439d2}子项。双击“默认”,将其数值数据设置为“注册表编辑器”。在CLSID下新建两个字符串项:一个名为InfoTip,将其数值数据设为“打开注册表编辑器”,此为鼠标移动到控制面板项上时显示的提示信息;另一个名为System.ControlPanel.Category,数值数据设为代码5,表示将“注册表编辑器”归入“系统和安全”分组中。
(图3)
若未指定代码值,则默认归入“所有控制面板选项”中。具体分类和代码间的关系见表。
(表)
在注册表中调用某个程序的核心,是建立注册表中项目与程序路径的关联。具体到本例,就是要建立regedit程序与前述相关注册表项的关联。
首先在{e054cbd2-94e6-4564-a35b-29e29fb439d2}项下新建名为DefaultIcon的子项,该子项“默认”值的数值数据为“注册表编辑器”程序路径“%SystemRoot%\regedit.exe”。DefaultIcon键值表示该程序图标。随后,在上述项下新建名为Shell的子项,在Shell项下新建Open子项,在Open项下新建command子项。command键值对应打开注册表编辑器的命令regedit。在右侧窗格中双击“默认”值,将其数值数据设为“regedit”。
(图4)
经过如上操作,我们便可以在控制面板窗口中找到“注册表编辑器”的入口。点击“注册表编辑器”链接文字,即可启动注册表编辑器。
明白了上述原理之后,如果希望将电脑中未纳入控制面板的工具,或者由用户安装的第三方系统维护工具也纳入到控制面板来管理,只需将上述command键值对应的命令修改为第三方程序的路径,并修改相应的名称和提示信息内容即可。
2. 系统项目 或显或隐任我控
控制面板中不但可以添加任意程序,存在于其中的项目还可以被隐藏。要从控制面板窗口中隐藏一个项目,例如“鼠标”、“个性化”、“系统”等项目,打开本地组策略编辑器,依次定位到“用户配置→管理模板→控制面板”,然后双击右侧窗格中的“隐藏指定的控制面板项”。
(图5)
在接下来的配置窗口中,选择“已启用”,下方的“显示”选项被激活,点击此按钮,在不允许列表中填写隐藏项目所对应的代码,例如:“鼠标”为“Microsoft.Mouse”、“系统”为“Microsoft.System”、“个性化”为“Microsoft.Personalization”。
(图6)
这样就可以将控制面板中的某个项目隐藏起来了。