我已经创建了一个自解压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文件能够将正确的权限传递给它启动的命令?
我有一个批处理文件(出于兼容性原因)在32位cmd.exe进程中运行.但是,在这种情况下,我现在需要启动64位版本的Windows命令行工具msiexec.我怎样才能做到这一点?
其他细节:
我正在使用批处理文件来安装各种软件产品.为了最大限度地兼容旧产品,批处理文件作为32位进程运行.但是,我现在需要安装Intel Haxm,它需要64位版本msiexec.
我已经尝试过调用c:\windows\system32\msiexec.exe,但是在执行此操作时,Windows安装程序日志文件仍然说:
=== Verbose logging started: 14.04.2015 14:27:53 Build type: SHIP UNICODE 5.00.9600.00 Calling process: c:\windows\SysWOW64\msiexec.exe ===