シナリオ:パフォーマンスは気にしません。レジストリで確認する必要のある値の配列があります。//値の前には何でも含めることができます。これを変更する必要があります。
今のところ、すべての値を繰り返しているようには感じません。いくつかスキップして、最終的にnullになってクラッシュするようなものです。
これはコンソールプログラムです。メインは次のようになります。
static void Main(string[] args)
{
string[] FASKeyWords = new string[] { "DummyValue1", "DummyValue2" };
RegistryKey BaseKey = Registry.LocalMachine;
foreach (string FASKeyWord in FASKeyWords)
{
Console.WriteLine("Looking in " + BaseKey.Name);
Console.WriteLine("Looking for : " + FASKeyWord);
GetSubKeys(BaseKey, FASKeyWord);
}
}
今、メインはこれをボイドと呼んでいます
private static void GetSubKeys(RegistryKey SubKey,string KeyWord)
{
foreach (string valueName in SubKey.GetValueNames())
{
string Value = SubKey.GetValue(valueName).ToString();
//Check for any values at all.
MessageBox.Show(valueName + " with data : " + Value);
if (Value.Contains(KeyWord))
MessageBox.Show("Found '" + KeyWord + "' At " + SubKey.Name);
}
foreach (string Key in SubKey.GetSubKeyNames())
{
MessageBox.Show(SubKey.Name);
GetSubKeys(SubKey.OpenSubKey(Key), KeyWord);
}
}
私はRegistryクラスでの作業に最適とは言えませんが、私の知る限り、これは問題ないはずです。、私はあまりにも長い間それを盲目的に主演してきました、私はそれが別の目で良いだろうと思いました:)
クラッシュは次の場所で発生します:string Value = SubKey.GetValue(valueName).ToString(); NullReferenceExceptionを追加すると、キー内のすべての値を含むmessageBoxは表示されません。これは、ランダムにemを選択するようなものです。