首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >RegistryKey.GetValue(.)返回空

RegistryKey.GetValue(.)返回空
EN

Stack Overflow用户
提问于 2015-07-08 20:50:11
回答 1查看 1.6K关注 0票数 2

我试图检索(REG_SZ)注册表项的值并将其写入字符串。但是,这段代码似乎认为密钥为null或不存在,并且不允许我对其进行GetValue()。下面是我用来检索值的代码。

代码语言:javascript
复制
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对象是空的。

提前谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-07-08 21:17:42

我会诚实的,没有安装Xactimate,我没有相同的注册表条目,你这样做,所以我使用Skype作为我的钥匙。

我改变了一件事,我把它从\改为使用文字字符串标志。FYI,我是在LINQPad中运行的,所以忽略“转储”命令

代码语言:javascript
复制
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: ");

以下是两个转储的结果

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31303454

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档