Windows有一种模糊且明确的方式来声明在Windows注册表中注册应用程序的标准。
遵循application registration的官方文档Microsoft建议在
下注册应用程序HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\App Paths\MyApp.exe
然而开发人员似乎没有遵循此建议,因为在我的系统上尚未创建此密钥,而其他应用程序已注册到
HKEY_CURRENT_USER\Software\Classes\MyApp
和
HKEY_CURRENT_USER\Software\Classes\Applications\MyApp.exe
上面的每个键具有不同的结构,因此具有不同的选项(即,键 SupportedTypes 在一个而不是另一个中可用)。在这些不同的密钥下注册应用程序之间的区别是什么?在哪种情况下你选择的是另一个?
答案 0 :(得分:3)
是的,注册表中有多个位置可以放置应用程序信息以及使用哪个键取决于您注册的内容/原因。
我认为主要的注册点是注册"默认程序"在SOFTWARE\RegisteredApplications
下。如果您的应用符合其中一个client types,则应将您的RegisteredApplications值指向Software\Clients\%ClientType%\%YourCanonicalName%\Capabilities
,否则您可以使用Software\%YourCompany%\%YourApp%\Capabilities
或Software\Classes\Applications\%Filename%\Capabilities
等任何键。
如果您希望自己的应用程序显示在特定文件扩展名的"Open With" dialog中,则可以列出HKCR\%.ext%\OpenWithProgids
下的ProgId或HKCR\%.ext%\OpenWithList
下的应用程序文件名。< / p>
一般&#34;打开&#34;信息存储在HKCR\Applications\%Filename%
下。
Software\Microsoft\Windows\CurrentVersion\App Paths
键主要用作shell的%Path%环境变量扩展,因此如果用户只在“运行”对话框中键入文件名,它就可以找到可执行文件的完整路径。它还可以包含有关您的应用程序如何处理&#34;拖放的信息。降&#34;和URL协议。
HKCR\AppID
下还有一些应用程序信息,但除非您有COM服务器,否则这不适用。
就具体问题而言,HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\App Paths\MyApp.exe
和HKEY_CURRENT_USER\Software\Classes\Applications\MyApp.exe
是我已经涵盖的文档注册密钥。 SupportedTypes键记录在here。
HKEY_CURRENT_USER\Software\Classes\MyApp
看起来像ProgId,通常用于register file types和URL protocol handlers。