在registry位置上写的方法

在C#窗口应用程序工作。我想写在registry.i知道如何写在registry。我使用bellow语法来写在registry。

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

但问题是我没有写在指定的位置。 我想写在波纹pipe的位置

 HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run 

在这个位置想要添加string值=“abc”ValueData =“efd”如果有任何查询请提前询问。

对于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提示。

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

最好的事情是在安装过程中写入这个注册表项(你将拥有完整的管理权限)。 一旦你的应用程序被安装,你应该只读取它。

将所有常规设置保存在HKEY_CURRENT_USER下。 使用Registry.CurrentUser字段来做到这一点。 或者,更好的办法是放弃注册表并将应用程序的设置保存在配置文件中 。 Visual Studio内置了对此的支持,使用C#很简单。 注册表不再是保存应用程序状态的推荐方式。

 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");