我对Windows 7注册表问题感到困惑,虽然各种问题和答案让我在那里找到了一些方法,但我见过的那些问题解决了我的特定问题.我不知道其他Windows版本是否会影响这个问题,但我们都有win7x64机器.
我们的工作中有各种各样的工具,一些C++,一些C#,一些python(2.6)等.我们还运行32位和64位工具.在过去,我们很高兴地存储了注册表信息HKLM.我们一直在努力将东西转移到HKCU.我们已经就是否要这样做,影响UAC等进行了很多讨论.我们真的想尝试做出这一举动.那说:
我们无法读取/写入注册表项HKCU/software/CompanyABC/App.我们app在python中进行了一次设置编写,使用将注册表项写入上述位置_winreg.我们是否指定KEY_WRITE| KEY_WOW64_32KEY或只是KEY_WRITE,值被写入HKCU/Software/WOW6432Node/companyABC/app.精细.
然后我有一个C#应用程序试图读取这些值.使用Microsoft.Win32.Registry,我打开子键('HKCU/Software/CompanyABC/app'),我看不到我的值.事实证明我看到以下行为:
HKLM,这些东西都可以正常工作.python应用程序将写入HKLM/Softare/Wow6432Node/CompanyABC/app,C#代码将从该位置读取.考虑到我们如何构建C#应用程序以及通过python编写注册表值,这一切都是正确的_winreg功能将写入HKCU/Sofrware/Wow6432Node/CompanyABC/app,但C#应用程序会读取HKCU/Software/CompanyABC/app.C#应用程序是作为x86应用程序构建的(不是任何CPU而不是x64)所以我假设应用程序将被正确地重定向到wow6432Node,但它似乎没有.经过一番调查,似乎HKCU/Software有所不同. 此文章似乎表明,这个区域是"共享",而不是重定向.如果是这样的话,那么我不明白为什么我们的Python应用程序(再次使用_winreg)被写入到HKCU使用了一个位置Wow6432Node-它似乎应该没有地方可以重定向写它.我想这可能是一个错误_winreg.
我真的希望避免WOW6432Node明确地使用我们的工具,但这就是我今天所处的位置.任何人都可以向我解释如何使32位和64位进程的注册表访问HKCU正常工作,而不必求助于32位配置单元的硬编码路径?