我试图检索(REG_SZ)注册表项的值并将其写入字符串。但是,这段代码似乎认为密钥为null或不存在,并且不允许我对其进行GetValue()。下面是我用来检索值的代码。
string s64BasePath = "SOFTWARE\\Wow6432Node\\Xactware\\";
private void versionSelectorBox_SelectedIndexChanged(object sender, EventArgs e)
{
showForms();
sVersionSelected = versionServerBox.Text;
if (b64Bit == true)
{
string sRKey = s64BasePath + sVersionSelected + "\\"; //Reads as SOFTWARE\\Wow6432Node\\Xactware\\Xactimate28\\
using (RegistryKey key = Registry.LocalMachine.OpenSubKey(sRKey))
{
if (key != null)
{
//label1.Text = "Test."; //Reaches this point just fine
Object o = key.GetValue("Location");
if (o != null)
{
//label1.Text = "Test."; //Does not reach this point, o = null?
sLocationKey = Convert.ToString(o);
}
}
}
//label1.Text = sLocationKey;
}这里是注册表的样子。如您所见,位置键存在于所提供的路径中。但是,代码并没有跳入内部的if语句中,它的作用就像o对象是空的。

提前谢谢。
发布于 2015-07-08 21:17:42
我会诚实的,没有安装Xactimate,我没有相同的注册表条目,你这样做,所以我使用Skype作为我的钥匙。

我改变了一件事,我把它从\改为使用文字字符串标志。FYI,我是在LINQPad中运行的,所以忽略“转储”命令
var test = @"SOFTWARE\Wow6432Node\Skype\Phone";
var reg = Microsoft.Win32.Registry.LocalMachine.OpenSubKey(test);
reg.Dump("OpenSubKey: ");
var result = reg.GetValue("SkypeFolder");
result.Dump("GetValue: ");以下是两个转储的结果

https://stackoverflow.com/questions/31303454
复制相似问题