为所有用户添加HKEY_CURRENT_USER的密钥

时间:2013-04-25 17:40:11

标签: .net installer registry

我有一个安装程序,可以在HKEY_CURRENT_USER上安装密钥。当我运行安装程序时,它只将它添加到正在安装的用户上。有没有办法立即将密钥添加到所有用户?

由于

5 个答案:

答案 0 :(得分:12)

您必须浏览HKEY_USERS下的所有不同用户,这需要提升权限。并且不捕获任何尚未创建的用户。这只是错误的方法。

执行此操作的方法是在安装时将{默认值>添加到HKLM下的相应密钥。当您的程序尝试从注册表中读取时,它首先在HKCU中查找,如果您的密钥不存在,它会将HKLM中相应密钥的信息复制到HKCU中的密钥}。

安装程序的一般规则是它们不应该依赖于随后将使用已安装程序的用户运行。当然,在公司设置中,程序通常安装在用户帐户下,该帐户永远不会运行正在安装的程序。

答案 1 :(得分:9)

在某些情况下, Active Setup 可能是解决方案。

它的工作原理是向 HKLM \ SOFTWARE \ Microsoft \ Active Setup \ Installed Components \%package name%添加一个版本号的密钥。当用户登录Windows时,检查此位置并将其与 HKCU \ SOFTWARE \ Microsoft \ Active Setup \ Installed Components \%package name%进行比较。如果它丢失或版本较低,则它会运行 HKLM \ SOFTWARE \ Microsoft \ Active Setup \ Installed Components \%package name%\ StubPath 中设置的任何内容。

您可以通过这种方式执行一些自定义操作,例如我用它来添加某个脚本(以映射网络驱动器)到 HKEY_CURRENT_USER \软件\微软\的Windows \ CurrentVersion \ Run中 以下方式:

  

reg add“HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Active Setup \ Installed   Components \ MapDrive“/ v”版本“/ d”1“/ t REG_SZ / f

     

reg add   “HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Active Setup \ Installed   Components \ MapDrive“/ v”StubPath“/ d”reg add   HKEY_CURRENT_USER \ Software \ Microsoft \ Windows \ CurrentVersion \ Run / v   “MountDrive”/ d“C:\ map.cmd”/ t REG_DWORD / f“/ f

这里会发生什么:

  • 当用户下次登录时,Active Setup会检查密钥下的注册表中是否存在值为1或更大的字符串Version HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Active Setup \ Installed Components \ MapDrive 。 没有,因此它创建它,并运行第二个reg add命令,该命令在 HKEY_CURRENT_USER \ Software \ Microsoft \ Windows \下添加一个值为 C:\ map.cmd 的字符串CURRENTVERSION \运行
  • 它只发生一次,因为在每次连续登录时,Active Setup都会发现 HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Active Setup \ Installed Components \ MapDrive 现在有一个版本。

听起来很复杂,但一旦弄清楚就会有意义,而且非常有用。

http://wpkg.org/Adding_Registry_Settings#Adding_entries_to_HKCU_for_all_users

答案 2 :(得分:2)

这是我目前在Windows 7中工作的流程

  • 在注册表中找到HKCU下的关键字,然后将其导出。

  • 现在右键单击HKEY_USERS键并选择加载配置单元。浏览到C:\ Users \ Default并选择NTUSER.DAT。根据您的喜好命名蜂巢(例如NAMEHERE)。

  • 导出的reg文件中的
  • 替换了所有的实例 [HKEY_CURRENT_USER \ 同 [HKEY_USERS \ NAMEHERE \ (或者你给蜂巢命名的任何东西) 并保存文件

  • 双击reg文件将其合并

  • 突出显示NAMEHERE键并选择卸载配置单元。

现在,对于任何新配置文件,他们都会获得这些密钥但是,如果您使用预先存在的配置文件登录,则不会显示现有配置文件。如果要删除配置文件,我发现最简洁的方法是右键单击计算机,选择属性,高级系统设置,然后选择用户配置文件下的设置。突出显示要删除的配置文件,然后选择删除。

似乎这不会一直有效。我在这里寻找有关为什么这对我正在尝试添加的密钥不起作用的信息 HKEY_CURRENT_USER \ Software \ Classes \但直到现在这个过程一直有效。如果我知道为什么不起作用,我会添加一个注释 - 我现在想知道是否必须通过用户上下文中的策略添加它。

答案 3 :(得分:-2)

不,没有办法做到。

在这种情况下考虑一下:您安装了应用程序,然后创建了一个新的用户帐户。如何在安装期间向此新帐户添加注册表项?


或者唯一的方法是该用户启动您的应用程序。这是您的应用程序在首次启动时使用默认值创建密钥。

答案 4 :(得分:-2)

我认为最好的方法是GPO。

创建一个GPO,修改将HKCU应用您要对受该GPO影响的用户进行的更改。{/ p>

以下Microsoft KB可能有助于实现此目的:

http://technet.microsoft.com/en-us/library/bb742499.aspx