C# Registry.CurrentUser和64位
有人能给我解释一下这个奇怪的结果吗 在linqPad中获得以下代码C# Registry.CurrentUser和64位,c#,.net,registry,64-bit,C#,.net,Registry,64 Bit,有人能给我解释一下这个奇怪的结果吗 在linqPad中获得以下代码 Microsoft.Win32.Registry.CurrentUser.OpenSubKey(@"Software\Microsoft").Dump(); Microsoft.Win32.Registry.LocalMachine.OpenSubKey(@"Software\Microsoft").Dump(); 在process monitor中查看时,如下所示: RegQueryKey HKU\S-1-5-21-.
Microsoft.Win32.Registry.CurrentUser.OpenSubKey(@"Software\Microsoft").Dump();
Microsoft.Win32.Registry.LocalMachine.OpenSubKey(@"Software\Microsoft").Dump();
在process monitor中查看时,如下所示:
RegQueryKey HKU\S-1-5-21-...
RegOpenKey HKU\S-1-5-21-...\Software\Microsoft
RegSetInfoKey HKU\S-1-5-21-...\Software\Microsoft
RegQueryKey HKU\S-1-5-21-...\Software\Microsoft
RegQueryKey HKU\S-1-5-21-...\Software\Microsoft
RegQueryKey HKLM
RegOpenKey HKLM\Software\Wow6432Node\Microsoft
RegSetInfoKey HKLM\SOFTWARE\Wow6432Node\Microsoft
RegQueryKey HKLM\SOFTWARE\Wow6432Node\Microsoft
RegQueryKey HKLM\SOFTWARE\Wow6432Node\Microsoft
我的问题是:为什么Registry.CurrentUser访问64位和Registry.LocalMachine访问32位? (还有,为什么Registry.CurrentUser访问
HKU\S-..
而不是HKCU
)
使用Windows 7,64位.Net 3.5,LINQPad.exe*32
如果您查看MSDN,它会说HKCU\Software\Classes是通过WOW64重定向的,而不是整个HKCU\Software密钥重定向的
HKEY_CURRENT_USER Shared Shared
SOFTWARE Shared Shared
Classes Shared Redirected and reflected
Appid Shared Redirected and reflected with one exception: the DllSurrogate and DllSurrogateExecutable registry values are not reflected if their value is an empty string.
CLSID Redirected Redirected and reflected
DirectShow Redirected Redirected and reflected
Interface Redirected Redirected and reflected
Media Type Redirected Redirected and reflected
MediaFoundation Redirected Redirected and reflected
关于
HKU\S-
vsHKCU
。。。如果创建Microsoft Word的快捷方式,称为“我的文字处理器”,然后双击它,您希望启动的程序在其标题栏或路径中显示“我的文字处理器”吗HKCU
只是引用特定HKU
子项的简写方式。您使用的是哪个版本的LinqPad?CurrentUser是别名,它实际上不存在于物理注册表中。它被重定向到登录用户的HKU。