-3

存在しないレジストリ キーを見つけようとすると、未処理の例外がスローされます。

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;
    }

これは try catch で解決できますが、これは間違っているように感じます。

敬具、

4

2 に答える 2

0

&&ビットごとの AND 演算子 ( ) の代わりに論理 AND 演算子 ( ) を使用する必要があり&ます。コードを次のように変更します。

if (checkKey(path) != null && checkKey(path).GetValue(subpath) != null)
于 2013-09-01T16:41:39.040 に答える
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;
    }
}
于 2013-09-01T16:42:39.163 に答える