【问题标题】:WriteRegStr HKLM: Cross Windows Platform SolutionWriteRegStr HKLM:跨 Windows 平台解决方案
【发布时间】: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


【解决方案1】:

我是否正确,这是在 Windows 7/64 位计算机上写入本地计算机注册表的唯一方法?

错误:对于 NSIS(在下一个版本之前是 32b 应用程序 - 当前是 2.46),您可以选择使用 SetRegView 访问 64b 或 32b

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-04-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-16
    • 1970-01-01
    • 1970-01-01
    • 2012-10-25
    • 2021-11-08
    相关资源
    最近更新 更多