Inno – 防止registry键被redirect到Wow6432Node

在我的Inno安装程序中,我正在编写一些registry项:

RegWriteStringValue(HKEY_LOCAL_MACHINE, 'SOFTWARE\Google\Chrome\NativeMessagingHosts\com.mycompany.myapp', '', ExpandConstant('{app}\{#MyAppChrome}')); RegWriteStringValue(HKEY_LOCAL_MACHINE, 'SOFTWARE\Mozilla\NativeMessagingHosts\com.mycompany.myapp', '', ExpandConstant('{app}\{#MyAppChrome}')); 

它会自动将它写入Wow6432Node下的键,这很好。 但火狐预计它不在Wow6432Node下:

视窗

对于全局可见性,请使用以下名称创build一个registry项:

HKEY_LOCAL_MACHINE \ SOFTWARE \ Mozilla \ NativeMessagingHosts \键应该有一个默认值,这是清单的path。

请注意,不应在Wow6432Node下创build此密钥,即使该应用程序是32位。 浏览器将始终在registry的“本机”视图下查找密钥,而不是32位模拟。 要确保在“本机”视图中创build密钥,可以将KEY_WOW64_64KEY或KEY_WOW64_32KEY标志传递给RegCreateKeyEx。 请参阅访问备用registry视图。

那么,我怎样才能防止与Firefox相关的registry项的redirect。

如果在64位Windows上安装64位应用程序,则可以将所有内容都更改为64位模式:

 [Setup] ArchitecturesInstallIn64BitMode=x64 

如果您在64位Windows上安装32位应用程序,则可以使用HK * 64注册表根目录执行特定写入64位注册表视图:

 [Registry] Root: HKLM64; Subkey: "Software\..."; ValueType: String; ValueData: "{app}..."; Flags: uninsdeletekey; Check: IsWin64 Root: HKLM; Subkey: "Software\..."; ValueType: String; ValueData: "{app}..."; Flags: uninsdeletekey; Check: not IsWin64 

如果你喜欢Pascal脚本, if IsWin64 then ...你也可以使用if IsWin64 then ...