2012-12-11 103 views
1

有人可以为我解释这个奇怪的结果吗?Registry.CurrentUser和64位

得到了下面的代码在linqPad

Microsoft.Win32.Registry.CurrentUser.OpenSubKey(@"Software\Microsoft").Dump(); 
Microsoft.Win32.Registry.LocalMachine.OpenSubKey(@"Software\Microsoft").Dump(); 

当在过程中寻找监控它看起来像这样:

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位,净3.5,LINQPad.exe *32

+0

关于'HKU \ S-''VS ... HKCU'如果您创建一个快捷方式到Microsoft Word,名为 “我的字处理器”,然后双击它,你希望启动的程序在标题栏或其路径中显示“我的文字处理器”? 'HKCU'只是引用特定'HKU'子键的简写方式。 –

+0

您正在使用哪个版本的LinqPad? – Steve

+0

@Steve,4.43.06 – adrianm

回答

2

如果你看看MSDN documentation它说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