我正在使用InstallShield创建一个运行.cmd文件的MSI,该文件调用powershell脚本。 powershell脚本更改了2个注册表项。一个是删除SYSTEM的注册表项上的DENY权限,另一个是将键的值从0更改为1.
当手动执行或我只是运行.MSI中使用的.cmd文件时,脚本运行正常。
然而,当我运行.msi时,运行cmd文件...执行powershell脚本并将值从0更改为1 ...但是,DENY不会被删除。 msi正在运行一个可执行的自定义操作,我将其命名为RunCMD,它设置为在“系统上下文中的延迟执行”中运行,并设置为在PublishFeatures之后运行。
我不知道为什么以这种方式运行.cmd(应该提升)不执行powershell脚本的一部分,该部分改变了注册表项的权限,但它确实允许更改值其他关键。该脚本肯定会运行,但在.msi中运行时它会部分失败。
同样,如果我自己手动运行.cmd文件,脚本运行时没有问题,所以这不是脚本本身的问题。