在Windows 2008服务器上运行aspnet_setreg.exe

5
我有一个网站,使用aspnet_setreg.exe将身份用户的用户名和密码加密到注册表中。这一直很正常,但当我在Windows 2008上运行它时,出现了以下错误:
C:\aspnet_setreg>aspnet_setreg.exe -k:SOFTWARE\MYCODE\identity -u:"domain\user" -p:"password"
请编辑您的配置文件以包含以下内容: userName="registry:HKLM\SOFTWARE\MYCODE\identity\ASPNET_SETREG,userName" password="registry:HKLM\SOFTWARE\MYCODE\identity\ASPNET_SETREG,password"
注册表键的DACL授予System、Administrators和Creator Owner完全控制权限。
如果您对配置部分的凭据进行了加密,或者对配置部分的连接字符串进行了加密,请确保进程标识具有读取注册表键的访问权限。此外,如果您已经配置IIS访问UNC共享的内容,则用于访问共享的帐户需要读取注册表键的访问权限。可以使用Regedt32.exe查看/修改注册表键权限。
为了防止发现,您可以重命名注册表子键和注册表值。
是否有其他人使用过这个并在2008年看到它工作?
谢谢

我最终将密钥从2003服务器移动了。但仍然想知道是否有其他人在2008机器上使用过这个。谢谢... - Larry Hipp
4个回答

5

aspnet_setreg.exe可能存在的问题是它是一个32位进程,会将内容写入Wow6432Node而不是上面提到的位置。如果您正在运行64位应用程序池,则需要将注册表键复制到"真正的"x64位置。


好知道...这台机器是32位的,但我将不得不在一些64位的机器上重复这个过程。感谢提醒。 - Larry Hipp

2

1) aspnet_setreg应用程序将注册表项放入HKLM\Software\Wow6432Node\其余路径中。

如上所述,这是32位应用程序修改64位注册表项的行为。

2) 要将键移动到正确位置,我将该键导出到.reg文件中,然后编辑了该文件并在其中删除了Wow6432Node目录。

3) 或者,您可以直接使用Wow6432Node路径:

例如:

userName="registry:HKLM\Software\Wow6432Node\MYCODE\identity\ASPNET_SETREG,userName"

password="registry:HKLM\Software\Wow6432Node\MYCODE\identity\ASPNET_SETREG,password"

4) 注意,您必须具有管理员权限才能运行此程序。在Windows 7上,我使用“以管理员身份运行”从命令行运行它,并且aspnet_setreg将其存储在HKEY_USERS [USER SID] \ Software \ Classes \ VirtualStore \ MACHINE \ SOFTWARE \ Wow6432Node中。

5) 最后,请记得设置注册表项的权限,以便您的应用程序可以从注册表键中读取。

参考资料:http://support.microsoft.com/kb/329290


这个链接 http://support.microsoft.com/kb/329290 已经失效了,你能否更新一下正确的链接? - Ram Singh

0

我已经将密钥从2003服务器移动了。但我仍然想知道是否有其他人在2008机器上使用过这个。


0

关于x64位置,你说得对。我如何让aspnet_setreg.exe在x32注册表位置设置注册值?


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接