我试图获取注册表键的值,并与特定的值,如果它与此值匹配之后进行比较。不幸的是我的方法返回一个“空”的价值,我不知道为什么。
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;
}
}
我去了不同的方法。我使用的是不同的方法(我已经有了)来检查值名称(值数据)存在于所有的,然后它用,我要被测试的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;
}
}