Inno - 防止注册表项被重定向到Wow6432Node

时间:2017-06-24 10:57:09

标签: windows registry inno-setup

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

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下的密钥,这很好。但是firefox希望它不在Wow6432Node:

之下
  

     

要获得全局可见性,请使用以下名称创建注册表项:

     

HKEY_LOCAL_MACHINE \ SOFTWARE \ Mozilla \ NativeMessagingHosts \ The   key应该有一个默认值,即路径   清单。

     

请注意,即使在Wow6432Node下也不应创建此密钥   该应用程序是32位。浏览器将始终在下面查找密钥   注册表的“本机”视图,而不是32位仿真。确保   密钥是在“原生”视图中创建的,您可以通过   KEY_WOW64_64KEY或KEY_WOW64_32KEY标记到RegCreateKeyEx中。看到   访问备用注册表视图。

那么,我该如何阻止firefox相关注册表项的重定向。

1 个答案:

答案 0 :(得分:1)

如果在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 ...