C# 问题创建删除注册表项的方法

标签 c# registry

我承认我是 C# 新手。我正在努力创建一种使用 .NET 删除注册表项的方法。该方法采用一个字符串参数,其中包含要删除的完整 key 。以下是我尝试执行的操作(显然)行不通的示例:

namespace NameHere
{
    class Program
    {
        static void Main(string[] args)
        {
            RegistryKey hklm = Registry.LocalMachine;
            hklm = hklm.OpenSubKey(@"SYSTEM\CurrentControlSet\Control\Print\Environments\Windows NT x86\")
        string strKey=”Test123”;
string fullPath = hklm + "\\" + strKey;
            deleteRegKey(fullPath);  
        }

        static void deleteRegKey(string keyName)
        {

            Registry.LocalMachine.DeleteSubKey(keyName);

        }
    } 
}

我尝试了其他一些迭代,并在谷歌上搜索解决方案,但到目前为止,还无法将各个部分组合在一起。任何帮助将不胜感激。另外,任何关于为什么我蹩脚的尝试无法帮助澄清我的知识差距的解释都会很棒。

最佳答案

这个例程实际上应该是一句台词,例如:

Registry.LocalMachine.DeleteSubKey( @"SYSTEM\ControlSet...\etc...");

您不需要打开RegistryKey对象,因为Registry.LocalMachine已经为您打开了。

如果您确实需要打开RegistryKey 对象来执行其他操作,请注意RegistryKey 实现了IDisposable,因此现在您已经创建了一个对象,无论如何您都有责任处置它。因此,您必须用 try { ... } 包围代码,并在 finally block 中调用 Dispose()。幸运的是,可以使用 using 更优雅地在 C# 中进行编码:

using( RegistryKey key = Registry.LocalMachine.OpenSubKey(...) ) {
    ...
}

关于C# 问题创建删除注册表项的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/865638/

相关文章:

javascript - NodeJS 相当于 hmac-sha256 授权的 C# 代码

c# - ASP.NET 5 Web 项目中的 Entity Framework Core - 自动生成 LINQ 过滤器查询

c# - 使用 Xdocument 读取 XML

delphi - Windows 在哪里存储 INI 文件的替代文件 (Delphi 7)

c++ - 如何在 C++ 中正确调用 RegQueryValueEx?

windows - COM 注册在 Windows 中如何工作

c# - 使用单例进行缓存

windows-7 - 安装程序忽略 WriteRegStr(尝试将应用程序添加到 Win Startup)

windows - 注册表拦截的替代方案

c# - C# 中的 OrientDB 连接池