Windows Server 2008 64位上的7-Zip执行权限

Min*_* Ex 4 windows 7zip

我已经创建了一个自解压7-Zip文件.其中包含一个CMD文件,7-Zip在提取时运行.此cmd读取注册表并执行一些其他活动(对此特定问题不重要).

在Windows Server 2003 32位中,此行为正常.但是,在Windows Server 2008框上进行测试表明,7-Zip启动的cmd没有读取注册表的权限.更具体地说,它可以读取某些区域(Windows当前版本),但不能读取其他区域(其他软件密钥).

如果我自己运行该cmd文件并运行它(从7-Zip提取它的临时文件夹中运行它)一切正常.

使用UAC"以管理员身份运行"会产生同样的问题,禁用UAC似乎没有帮助.

我不知道配置文件的任何7-Zip选项告诉它升级特权,或类似的东西.这里有什么我想念的吗?注册表访问是否在Windows Server 2008或64位版本的操作系统中被锁定?如何确保我的EXE文件能够将正确的权限传递给它启动的命令?

Har*_*ton 6

由于7-Zip文件是32位可执行文件,因此您的命令脚本在32位上下文中运行.其中一个后果是某些注册表位置被重定向.有关详细信息,请参阅MSDN.

您可以通过查找环境变量来检测WOW64环境,PROCESSOR_ARCHITEW6432并且可以通过运行cmd.exefound in 的副本返回到本机64位环境c:\windows\sysnative.

命令文件顶部的这两行应该可以解决问题:

if defined PROCESSOR_ARCHITEW6432 c:\windows\sysnative\cmd.exe /c %~pf0 %*
if defined PROCESSOR_ARCHITEW6432 goto :eof
Run Code Online (Sandbox Code Playgroud)