写入注册表位置的方法

时间:2011-05-08 11:30:02

标签: c# windows registry

在C#窗口应用程序上工作。我想写在registry.i知道如何在注册表上写。我使用下面的语法在注册表上写。

        Microsoft.Win32.RegistryKey key;
        key = Microsoft.Win32.Registry.CurrentUser.cre.CreateSubKey("asb");
        key.SetValue("asb", "Isabella");
        key.Close();

但问题是我无法在指定位置写字。我想在波纹管位置写字

HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run

HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run

在此位置想要添加字符串 value =“abc” ValueData =“efd” 如果有任何查询,请提前询问。谢谢。

3 个答案:

答案 0 :(得分:8)

对于HKCU:

string keyName = @"SOFTWARE\Microsoft\Windows\CurrentVersion\Run";
RegistryKey rk = Registry.CurrentUser.OpenSubKey(keyName, true);
rk.SetValue("abc", "efd");
rk.Close();

对于HKLM,您需要使用管理权限执行此操作。这需要在程序中添加清单以在Vista或Win7上调用UAC提示。

答案 1 :(得分:2)

写入HKEY_LOCAL_MACHINE需要管理权限。如果您在Windows Vista或7上运行,它还需要进程升级,以免与UAC(用户帐户控制)发生冲突。

最好的事情是在安装期间写入此注册表项(您将拥有完全管理权限)。安装完应用程序后,您应该只从读取

保存HKEY_CURRENT_USER下的所有常规设置。使用Registry.CurrentUser field执行此操作。或者,更好的是,完全放弃注册表和save your application's settings in a config file。 Visual Studio内置了对此的支持,从C#开始非常简单。注册表不再是保存应用程序状态的推荐方法。

答案 2 :(得分:2)

RegistryKey reg = Registry.LocalMachine.
                  OpenSubKey(@"Software\Microsoft\Windows\CurrentVersion\Run", true);

// set value of "abc" to "efd" 
reg.SetValue("abc", "efd", RegistryValueKind.DWord);

// get value of "abc"; return 0 if value not found 
string value = (string)reg.GetValue("abc", "0");