Registry.GetValue始终返回null [英] Registry.GetValue always return null
问题描述
我在注册表中有以下密钥:
在以下位置: 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.com / en-us / library / windows / desktop / aa965884%28v = vs.85%29.aspx ,从32位应用程序中读取64bit注册表和 http://msdn.microsoft.com/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: http://msdn.microsoft.com/en-us/library/windows/desktop/aa965884%28v=vs.85%29.aspx, Reading 64bit Registry from a 32bit application, and http://msdn.microsoft.com/en-us/library/windows/desktop/ms724072%28v=vs.85%29.aspx.
这篇关于Registry.GetValue始终返回null的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!