我在注册表中有以下密钥:
在以下位置: HKEY_LOCAL_MACHINE\SOFTWARE\RSA 具有值对象调用- WebExControlManagerPath ,其值是 c:\
我正试图这样做:
var r = Registry.GetValue(@ HKEY_LOCAL_MACHINE\SOFTWARE\ \RSA, WebExControlManagerPth,null); if(r!= null) ProcessAsUser.Launch(ToString());但是 r 的值始终为空。 / p>
有什么想法吗?
解决方案您不会以相同的方式访问HKEY_LOCAL_MACHINE配置单元在C#中,就像在批处理脚本中一样。您这样调用 Registry.LocalMachine :
RegistryKey myKey = Registry .LocalMachine.OpenSubKey(@ Software\RSA,false); 字符串值=(String)myKey.GetValue( WebExControlManagerPth); if(!String.IsNullOrEmpty(value)) { ProcessAsUser.Launch(ToString()); }更新:
如果返回null,则将构建体系结构设置为任何CPU 。操作系统可能会不同地虚拟化32位和64位注册表。请参阅: http:// msdn .microsoft / en-us / library / windows / desktop / aa965884%28v = vs.85%29.aspx ,从32位应用程序中读取64bit注册表和 msdn.microsoft/zh-cn/library/windows/desktop/ms724072%28v=vs.85%29.aspx 。
I have the following key in my registry:
under:HKEY_LOCAL_MACHINE\SOFTWARE\RSA I have value object call - WebExControlManagerPath and its value is c:\
I am trying to do this:
var r = Registry.GetValue(@"HKEY_LOCAL_MACHINE\SOFTWARE\RSA", "WebExControlManagerPth",null); if(r!=null) ProcessAsUser.Launch(ToString());But r value is always null.
Any ideas?
解决方案You don't access the HKEY_LOCAL_MACHINE hive the same way you do in C# as you would in batch scripting. You call Registry.LocalMachine, as such:
RegistryKey myKey = Registry.LocalMachine.OpenSubKey( @"Software\RSA", false); String value = (String)myKey.GetValue("WebExControlManagerPth"); if (!String.IsNullOrEmpty(value)) { ProcessAsUser.Launch(ToString()); }Update:
If it returns null, set your build architecture to Any CPU. The operating system may virtualize 32-bit and 64-bit registries differently. See: msdn.microsoft/en-us/library/windows/desktop/aa965884%28v=vs.85%29.aspx, Reading 64bit Registry from a 32bit application, and msdn.microsoft/en-us/library/windows/desktop/ms724072%28v=vs.85%29.aspx.
更多推荐
Registry.GetValue始终返回null
发布评论