我正在尝试使用以下内容,但无法解决为什么此IndexOf方法无法正常工作。
foreach (string s in regKey.GetSubKeyNames())
{
RegistryKey sub = Registry.LocalMachine.OpenSubKey(string.Format(@"{0}\{1}", _UninstallKey64Bit, s), false);
if (sub.ValueCount > 0)
{
values = sub.GetValueNames();
if (IndexOf(values, "DisplayName") != -1)
{
string name = (sub.GetValue("DisplayName") != null) ? sub.GetValue("DisplayName").ToString() : string.Empty;
if (!string.IsNullOrEmpty(name) && (name.ToLower() == appName.ToLower()))
if (IndexOf(values, "UninstallString") != -1)
{
uninstallValue = (sub.GetValue("UninstallString") != null) ? sub.GetValue("UninstallString").ToString() : string.Empty;
break;
}
}
}
}
任何人都可以帮我一把吗?
答案 0 :(得分:5)
正确的语法是:
if (Array.IndexOf(values, "DisplayName") != -1)
答案 1 :(得分:4)
GetValueNames()
返回一个字符串数组,因此您可能正在寻找:
if (values.Contains("DisplayName"))
答案 2 :(得分:3)
尝试
if (values.Any(v => v == "DisplayName")) )
{
...
}
答案 3 :(得分:1)
尝试更改 -
if (IndexOf(values, "UninstallString") != -1)
到
if (Array.IndexOf(values, "UninstallString") != -1)
答案 4 :(得分:1)
尝试此而不仅仅是IndexOf。
Array.IndexOf(values, "DisplayName")