代码:
try
{
RegistryKey SQMRegKey = Registry.LocalMachine.OpenSubKey("CurrentControlSet\\Control\\WMI\\Autologger", true);
//SQMRegKey.DeleteSubKey("SQMLogger");
SQMRegKey.DeleteSubKeyTree("SQMLogger");
SQMRegKey.Close();
}
catch (Exception ex)
{
MessageBox.Show(this, ex.ToString());
}
总是抛出异常System.NullReferenceException:对象引用未设置为对象的实例
答案 0 :(得分:0)
OpenSubKey可能会失败,在这种情况下,返回值为null
。您使用引用SQMRegKey
而不检查它是否实际指向有效对象。
try
{
var SQMRegKey = Registry.LocalMachine.OpenSubKey("CurrentControlSet\\Control\\WMI\\Autologger", true);
if(SQMRegKey != null)
{
SQMRegKey.DeleteSubKeyTree("SQMLogger");
SQMRegKey.Close();
}
}
catch (Exception ex)
{
MessageBox.Show(this, ex.ToString());
}
答案 1 :(得分:0)
注册表路径不正确。请使用以下修改后的代码:
try
{
RegistryKey SQMRegKey = Registry.LocalMachine.OpenSubKey("System\\CurrentControlSet\\Control\\WMI\\Autologger", true);
//SQMRegKey.DeleteSubKey("SQMLogger");
SQMRegKey.DeleteSubKeyTree("SQMLogger");
SQMRegKey.Close();
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}