尝试查找不存在的注册表项时,会抛出未处理的异常。
看起来当checkKey返回null并且它试图继续.GetValue它会抛出异常。
public static string getDirectory(string path, string subpath)
{
if (checkKey(path).GetValue(subpath) != null)
{
return checkKey(path).GetValue(subpath).ToString();
}
else
{
return null;
}
}
我试过if(checkKey(path)!= null& checkKey(path).GetValue(subpath)!= null)但是没有解决问题。
public static RegistryKey checkKey(string key)
{
if (getBaseCurrent64().OpenSubKey(key) != null)
{
return getBaseCurrent64().OpenSubKey(key);
}
else if (getBaseLocal64().OpenSubKey(key) != null)
{
return getBaseLocal64().OpenSubKey(key);
}
return null;
}
尝试捕获可以解决这个问题,但我觉得我做错了。
亲切的问候,
答案 0 :(得分:0)
您需要使用逻辑AND运算符(&&
)而不是逐位AND运算符(&
),将代码更改为:
if (checkKey(path) != null && checkKey(path).GetValue(subpath) != null)
答案 1 :(得分:0)
返回null时可以执行GetValue()。尝试将代码更改为
public static string getDirectory(string path, string subpath)
{
RegistryKey key = checkKey(path);
if (key != null && key.GetValue(subpath) != null)
{
return key.GetValue(subpath).ToString();
}
else
{
return null;
}
}