1
在Windows 7/64位计算机上,NSIS功能WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\" "blah" "blah"
不起作用。WriteRegStr HKLM:跨Windows平台解决方案
从我的理解,以得到它的工作的唯一方法是做到这一点: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访问无论是64B或32B是32个应用程序安装在64位操作系统上。您应该根据安装的应用程序是32位还是64位来读取/写入正确的路径。 –
@FranciscoR我不确定你的意思,但是如果你在64位计算机上调用函数WriteRegStr HKLM“Software \ Microsoft \ Windows \ CurrentVersion \ Uninstall \”“blah”“blah”,你将看到注册表从不写入。我不认为它与我正在安装的内容有任何关系,它只是不会出现在注册表中,无论如何 –
您必须以管理用户身份运行安装程序,以便能够在Vista或更高版本中写入HKLM(或HKCU) (或者在XP上,如果当前用户不是高级用户)。 –