Dav*_*lle 10 .net registry installer
我有一个安装程序,可以在HKEY_CURRENT_USER上安装密钥.当我运行安装程序时,它只将它添加到正在安装的用户上.有没有办法立即将密钥添加到所有用户?
谢谢
Dav*_*nan 13
您必须通过所有不同的用户HKEY_USERS,这需要提升权限.并且不捕获任何尚未创建的用户.这只是错误的做法.
这样做的方法是HKLM在安装时将默认值添加到相应的键.当您的程序尝试从注册表中读取时,它HKCU首先查找,如果您的密钥不存在,它会将相应密钥中的信息复制HKLM到密钥中HKCU.
安装程序的一般规则是它们不应该依赖于随后将使用已安装程序的用户运行.当然,在公司设置中,程序通常安装在用户帐户下,该帐户永远不会运行正在安装的程序.
在某些情况下,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\Software\Microsoft\Windows\CurrentVersion \运行 方式如下:
reg添加"HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Active Setup\Installed Components\MapDrive"/ v"Version"/ d"1"/ t REG_SZ/f
reg添加"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
这里发生了什么:
听起来很复杂,但一旦弄清楚就会有意义,而且非常有用.
http://wpkg.org/Adding_Registry_Settings#Adding_entries_to_HKCU_for_all_users