0

以下を使用しようとしていますが、この 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;
                        }
                }
            }
        }

誰かこれで手を貸してくれませんか?

4

5 に答える 5

5

正しい構文は次のとおりです。

if (Array.IndexOf(values, "DisplayName")  != -1)
于 2011-09-14T21:24:04.943 に答える
4

GetValueNames()文字列配列を返すので、おそらく探しているのは次のとおりです。

if (values.Contains("DisplayName"))
于 2011-09-14T21:23:06.760 に答える
3

試す

 if (values.Any(v => v == "DisplayName")) )
 {
    ...
 }
于 2011-09-14T21:23:15.683 に答える
1

IndexOf だけでなく、これを試してください。

Array.IndexOf(values, "DisplayName")
于 2011-09-14T21:24:59.100 に答える
1

変更してみてください -

if (IndexOf(values, "UninstallString") != -1)

if (Array.IndexOf(values, "UninstallString") != -1)
于 2011-09-14T21:24:48.643 に答える