我有一个C#应用程序调用:
Microsoft.Win32.Registry.CurrentUser.OpenSubKey(@"Software\MyApp")
Run Code Online (Sandbox Code Playgroud)
它被设置为目标x86,当我运行它时,我可以从任务管理器看到它是一个32位进程.但是,这行代码奇怪地转到了HKCU\Software\MyApp的64位配置单元,而不是HKCU\Software\Wow6432Node\MyApp中的32位配置单元.有任何想法吗?
我还启动了Powershell的两个实例,一个32位和一个64位,并运行以下但两者都返回64位配置单元的值.
get-itemproperty -Path Registry::HKEY_CURRENT_USER\Software\MyApp
Run Code Online (Sandbox Code Playgroud)
什么想法可能会出错?我已经三次检查过,32位和64位配置单元的注册表设置也与regedit不同.
因为您正在访问共享的密钥(HKCU\Software),而不是重定向。请参阅http://msdn.microsoft.com/en-us/library/windows/desktop/ms724072(v=vs.85).aspx和(更具体地说)http://msdn.microsoft.com/en-us/库/Windows/桌面/aa384253(v=vs.85).aspx
从第一个链接(强调我的):
在 64 位 Windows 上,部分注册表项针对 32 位应用程序和 64 位应用程序分别存储,并使用注册表重定向器和注册表反射映射到单独的逻辑注册表视图,因为 64 位版本的应用程序可能会使用与 32 位版本不同的注册表项和值。还有未重定向或反映的共享注册表项。
| 归档时间: |
|
| 查看次数: |
236 次 |
| 最近记录: |