在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” 如果有任何查询,请提前询问。谢谢。
答案 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");