首页 > 解决方案 > 如何使用 DeleteSubkeyTree 递归删除注册表项

问题描述

代码:

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:Object reference not set to an instance of an object

标签: c#

解决方案


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());
}

推荐阅读