2011-06-14 65 views
1

我正在使用C#开发.NET框架中的Windows应用程序。在安装应用程序时,我想将注册表写入一定的值。所以,我有这方面的两个问题:如何从c#应用程序创建注册表项?

  1. 如何我可以执行的代码,用于创建在安装时一个注册表项或存在的框架,允许我们这样做一些设置?

  2. 我不想在注册表中创建新节点,我可以在注册表中的任何位置使用某个常见位置,也可以在不影响本地系统设置的情况下使用现有节点存储我的值。

请帮我一把。

感谢,

Bibhu

+0

你是怎么决定将你的设置存储在注册表中的?只是因为?我强烈建议使用[应用程序设置](http://msdn.microsoft.com/en-us/library/k4s6c3a0.aspx),而不是对注册表没有任何依赖关系。 – 2011-06-14 02:18:56

回答

2

可以使用Microsoft.Win32.Registry类读取或写入Windows注册表。

http://msdn.microsoft.com/en-us/library/microsoft.win32.registry.aspx

它认为是不好的形式为丢弃的数据值到现有的注册表项。您应该创建一个由您的公司和/或应用程序名称标识的关键路径,并将注册表放在那里。这对最终用户来说是一种礼貌,他们可能希望在他们的应用程序从系统中移除后删除所有应用程序。

2

会议认为,你应该创建Software节点下的新节点。 MSDN上有大量关于创建注册表项的documentation

1

1)下面是关于如何编写从C#注册表中的一个很好的教程:http://www.codeproject.com/KB/system/modifyregistry.aspx

2)您可以而且应该创建一个新的密钥保存你的设置,你保证这种方式不干扰其他人的。通常,整个计算机的设置都存储在HKLM/Software/<your company>/<your application>/下,并且个人用户的注册表设置存储在HKLU/Software/<your company>/<your application>/

1

创建新节点(在HKLM/Software/YourCompany/YourApp下)是正确的。

此外,写入注册表的正常问题是您需要拥有管理员权限才能执行此操作。但是,如果您使用基于msi的安装程序,则无论如何您都必须具有管理员权限才能运行安装,并且安装程序将能够写入注册表。只是不打算以后从您的应用程序更改该条目,因为许多用户将无法做到这一点。

1

首先,由于您只是在安装过程中尝试写入注册表,因此可以修改MSI文件以包含注册表修改。本文将帮助在此:

http://msdn.microsoft.com/en-us/library/bb458038.aspx

这样,你不增加额外的C#代码仅部署任务。如果您想在安装后继续修改注册表,您可以在C#中添加命令来完成此操作,但这似乎不是必需的。

至于在哪里安装这些信息,我强烈建议您为此创建自己的节点。这是注册管理机构的用途。如果您开始混合来自同一区域内的两个或更多应用程序的信息,您将遇到麻烦。按照注册表的约定创建自己的位置。