我正在尝试获取注册表项的值,然后将其与特定值进行比较(如果它与该值匹配)。不幸的是,我的方法返回一个“空”值,我不知道为什么。
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;
}
}
答案 0 :(得分:0)
我采用了不同的方法。我正在使用另一种方法(我已经知道)来检查valueName(valueData)是否存在,然后将其与我要测试的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;
}
}