注册表键的值返回为空,即使它有一个值

问题描述 投票:0回答:1

我试图获取注册表键的值,并与特定的值,如果它与此值匹配之后进行比较。不幸的是我的方法返回一个“空”的价值,我不知道为什么。

if (HelperRegistry.RegistryKeyValueExists("HKEY_LOCAL_MACHINE\\SOFTWARE\\Wow6432Node\\Microsoft\\Office\\Outlook\\Addins\\Connect to Outlook.AddinModule", "FriendlyName", "Connect to Outlook"))
{
   OutputHandler.ColorCMDOutput("Do this", ConsoleColor.Green);
}
else
{
    OutputHandler.ColorCMDOutput("Do that", ConsoleColor.Red);
}


static public bool RegistryKeyValueExists(string keyName, string valueName, string valueToBeTested)
{
    try
    {
        using (RegistryKey key = Registry.LocalMachine.OpenSubKey(keyName + "\\" + valueName))
            if (key != null)
            {
                Object o = key.GetValue("FriendlyName");
                if (o != null)
                {
                    string test = Convert.ToString(o);
                    if (test == valueToBeTested)
                    {
                        return true;
                    }
                }
            }
        return false;
    }
    catch
    {
        return false;
    }
}
c# registry return-value key-value
1个回答
0
投票

我去了不同的方法。我使用的是不同的方法(我已经有了)来检查值名称(值数据)存在于所有的,然后它用,我要被测试的valueData比较。

static public bool RegistryKeyValueDataIdentical(string keyName, string valueName, string valueData)
{
    bool returnvalue = false;
    try
    {
        if (RegistryPathExists(keyName,valueName))
        {
            if (valueData == Microsoft.Win32.Registry.GetValue(keyName, valueName, null).ToString())
            returnvalue = true;
            else returnvalue = false;
        }
        else returnvalue = false;
    }
    catch
    {
        returnvalue = false;
    }
    return returnvalue;
}

static public bool RegistryPathExists(string keyName, string valueName)
{
    try
    {
        return (Microsoft.Win32.Registry.GetValue(keyName, valueName, null) != null);
    }
    catch
    {
        return false;
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.