我想将自定义文件夹添加到 Windows 10 Pro x64 控制面板、此 PC 和导航窗格。我找到了几个教程(tenforums 和 winaero),它们提供了预制的注册表脚本,用于将小程序和文件夹添加到控制面板和文件资源管理器。但是,我想更多地了解 HKCR\Classes\CSLID 中的某些字符串和键的含义、它们的作用以及如何正确选择正确的值。我不是程序员,MS 文档有点不直观且不清楚。
例如,假设我想将旧的通知区域图标小程序重新添加回控制面板。GUID 为 {05d7b0f4-2121-4eff-bf6b-ed3f69b894d9}。有关注册表项的一些问题:
- System.Software.TasksFileUrl="内部"
- InProcServer32=%SystemRoot%\System32\shdocvw.dll 和 ThreadingModel=Apartment
- 实例
- InitPropertyBag、ResourceDLL=taskbarcpl.dll 和 ResourceID=dword:00000064
- ShellFolder,属性=dword:a0000000 和 WantsParseDisplayName=""
键、字符串和值是什么意思,它们起什么作用,以及如何知道要分配什么值?
谢谢!
答案1
首先我要说的是,你永远不需要手动更改这些设置。你可以,但这并不意味着你应该这样做。对于你的问题“如何正确选择正确的价值观。”答案是“让软件为您完成这项工作。不要更改这些设置。”
只有微软工程师知道 Windows 注册表项的含义。不幸的是,他们没有维护所有设置的公开参考。有些未记录的注册表设置是由微软员工或黑客通过尝试和逆向工程设置而获得的。
以下是微软对 CLSID 的说法:
A CLSID is a globally unique identifier that identifies a COM class object.
https://docs.microsoft.com/en-us/windows/win32/com/clsid-key-hklm?redirectedfrom=MSDN
所以这是任何 COM 对象。不仅是 Windows 的部分,而且是任何向系统注册 COM 对象的应用程序。显然,微软不对第三方编写的 COM 对象负责,但如果他们能记录自己的 COM 对象就好了。
进程服务器32定义包含 COM 对象的 DLL。
https://docs.microsoft.com/en-us/windows/win32/com/inprocserver32
要了解有关此 COM 对象的更多信息,您必须查找该 DLL 的引用。您的 DLL 是“Shell Doc 对象和控制库”。
以下是 Nirsoft 收集有关 Windows XP 中所有 DLL 文件的信息的一个示例: https://xpdll.nirsoft.net/shdocvw_dll.html
#5 告诉我们该项目是ShellFolder
。以下是有关 ShellFolders 的一些信息:
https://docs.microsoft.com/en-us/windows/win32/api/shobjidl_core/nn-shobjidl_core-ishellfolder