在Windows注册表中注册应用程序

3

Windows在注册应用程序的Windows注册表时,有一种模糊且不明确的声明标准的方式。

根据应用程序注册的官方文档,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键)。

在这些不同的键下注册应用程序之间有什么区别,以及在什么情况下会选择其中之一?

1个回答

9

是的,在注册表中有多个位置可以放置应用程序信息,使用哪个键取决于您注册的内容和原因。

我会认为主要的注册点是“默认程序”注册SOFTWARE\RegisteredApplications。如果您的应用程序符合其中一个客户端类型,那么您应该将RegisteredApplications值指向Software\Clients\%ClientType%\%YourCanonicalName%\Capabilities,否则您可以使用任何键,例如Software\%YourCompany%\%YourApp%\CapabilitiesSoftware\Classes\Applications\%Filename%\Capabilities

如果您希望您的应用程序出现在特定文件扩展名的"Open With"对话框中,那么您可以在HKCR\%.ext%\OpenWithProgids下列出您的ProgId或在HKCR\%.ext%\OpenWithList下列出应用程序文件名。
一般的“打开方式”信息存储在HKCR\Applications\%Filename%下。

Software\Microsoft\Windows\CurrentVersion\App Paths键主要用作%Path%环境变量的扩展,以便Shell可以在运行对话框中仅输入文件名时找到可执行文件的完整路径。它还可以包含有关应用程序如何处理“拖放”和URL协议的一些信息。

HKCR\AppID下也有一些应用程序信息,但这仅适用于您拥有COM服务器的情况。


至于你的具体问题,HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\App Paths\MyApp.exeHKEY_CURRENT_USER\Software\Classes\Applications\MyApp.exe是我已经涵盖的文档注册键。SupportedTypes键在此处有记录。 HKEY_CURRENT_USER\Software\Classes\MyApp看起来像一个ProgId,通常用于注册文件类型URL协议处理程序

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接