我的注册表中有以下密钥:
在:HKEY_LOCAL_MACHINE\SOFTWARE\RSA我有值对象调用 - WebExControlManagerPath它的值是c:\
我想这样做:
var r = Registry.GetValue(@"HKEY_LOCAL_MACHINE\SOFTWARE\RSA", "WebExControlManagerPth",null);
if(r!=null)
ProcessAsUser.Launch(ToString());
Run Code Online (Sandbox Code Playgroud)
但r价值总是空的.

有任何想法吗?
Pal*_*mar 46
该声明的杰森是正确的,操作系统是这个问题,下面的代码将帮助您解决.
RegistryKey localKey;
if(Environment.Is64BitOperatingSystem)
localKey = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry64);
else
localKey = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry32);
string value = localKey.OpenSubKey("RSA").GetValue("WebExControlManagerPth").ToString();
Run Code Online (Sandbox Code Playgroud)
Jas*_*son 19
您不像在批处理脚本中那样访问HKEY_LOCAL_MACHINE配置单元,就像在C#中一样.你这样打电话Registry.LocalMachine:
RegistryKey myKey = Registry.LocalMachine.OpenSubKey( @"Software\RSA", false);
String value = (String)myKey.GetValue("WebExControlManagerPth");
if (!String.IsNullOrEmpty(value))
{
ProcessAsUser.Launch(ToString());
}
Run Code Online (Sandbox Code Playgroud)
更新:
如果返回null,请将构建体系结构设置为Any CPU.操作系统可以不同地虚拟化32位和64位注册表.请参阅:http://msdn.microsoft.com/en-us/library/windows/desktop/aa965884%28v=vs.85%29.aspx,从32位应用程序读取64位注册表,以及http://msdn.microsoft .com/zh-CN/library/windows/desktop/ms724072%28v = vs.85%29.aspx.
小智 5
如果您使用的是 64 位操作系统,当您尝试获取
HKEY_LOCAL_MACHINE\SOFTWARE\RSA它时实际上是在寻找HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\RSA
这就是为什么您得到 null
| 归档时间: |
|
| 查看次数: |
32666 次 |
| 最近记录: |