场景: 我们不关心性能。 我们有一个值的数组,我们需要在注册表中检查。 //价值可以有任何他们面前。我们需要改变这一点。迭代注册表,查找值
现在,我不觉得它会传递所有的值,就像它跳过一些,最后变成空白并崩溃。
这是一个控制台程序,主要是这样的:
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);
}
}
我从注册表类最佳工作很远,但我的知识应该没问题吧? ,我已经盲目地主演了太久,我认为这将是另一双眼睛:)
崩溃发生在:字符串值= SubKey.GetValue(valueName).ToString() ; 与NullReferenceException 另外,它不显示一个messageBox与一个键内的所有值,这就像它只是随机选择EM。
该问题的视觉效果。 http://peecee.dk/uploads/122012/Untitled2.png
如果您收到一个错误,请发布消息和堆栈跟踪。 –
对不起,我忘记了它产生的实际错误。 –
然后,您需要再次运行代码并捕获它。 –