【问题标题】:Writing to HKLM when running in command line mode在命令行模式下运行时写入 HKLM
【发布时间】:2014-07-16 03:43:53
【问题描述】:

我有一个将值写入注册表的程序。

我有一个 GUI 模式和一个命令行模式。程序在 GUI 模式下运行时完美写入 HKLM(x86 构建配置)

但是,当我在命令模式下运行我的程序时,值会写入 wow6432 节点下。我做了一些研究,发现 wow6432 节点用于存储在 64 位机器上运行的 32 位应用程序的注册表值。

我没想到在命令行模式下运行会从 64 位变为 32 位 - 但它似乎是。

不太清楚从这里去哪里,希望有人能指出我正确的方向。

【问题讨论】:

  • 如果您的程序写入 HKLM(没有 WOW6432Node)并且您使用的是 64 位操作系统,那么您不是执行 x86构建您的应用程序。请仔细检查您的 GUI 应用程序的构建配置。
  • 奇怪 - 它肯定设置为 x86。如果我将它设置为任何 CPU,那么它只会写入 wow6432
  • 那更奇怪了,应该正好相反。 :-)
  • 是的,不确定发生了什么 - 将我的构建配置添加到问题中

标签: vb.net registry 32bit-64bit wow64


【解决方案1】:

经过更多研究 - 我发现在命令行模式下运行时,注册表重新导向器正在重定向到 wow6432 节点。

为了绕过这个,我使用了:

RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry64)

这将直接打开 64 位视图,并允许写入 HKLM 而不会重定向到 wow6432 节点。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-12-28
    • 2020-07-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多