【发布时间】:2012-12-17 00:06:57
【问题描述】:
在 Windows 7/64 位计算机上,NSIS 函数 WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\" "blah" "blah" 不起作用。
据我了解,让它工作的唯一方法是这样做:WriteRegStr HKLM "Software\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\" "blah" "blah"
我是否正确,这是在 Windows 7/64 位计算机上写入本地计算机注册表的唯一方法?
是否有跨平台方式/功能可以写入本地机器注册表?
我唯一的选择是这样吗...
!macro WriteRegStrLocalMachine path regName regValue
WriteRegStr HKLM "SOFTWARE\WOW6432Node\${path}" "${regName}" "${regValue}"
WriteRegStr HKLM "SOFTWARE\${path}" "${regName}" "${regValue}"
!macroend
!macro ReadRegStrLocalMachine path regName regValue
ReadRegStr $1 HKLM "SOFTWARE\WOW6432Node\${path}" "${regName}"
ReadRegStr $2 HKLM "SOFTWARE\WOW6432Node\${path}" "${regName}"
# TODO: Check if $1 or $2 contain data
!macroend
【问题讨论】:
-
WOW6432Node 适用于安装在 64 位操作系统上的 32 位应用程序。您应该根据安装的应用程序是 32 位还是 64 位来读取/写入正确的路径。
-
@FranciscoR 我不确定你的意思,但如果你在 64 位计算机上调用函数 WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\" "blah" "blah" 你会看到注册表永远不会被写入。我认为它与我正在安装的内容没有任何关系,它只是不会出现在注册表中
-
您必须以管理用户身份运行安装程序才能在 Vista 或更高版本中写入 HKLM(或 HKCU)(如果当前用户不是超级用户,也可以在 XP 上写入) )。
标签: installation 64-bit nsis