我对批处理文件相当陌生,特别是在我现在被要求这样做的实例中。
我们在网络上有很多运行".kix“文件的旧批处理文件,它们多年来一直运行得很好。然而,我的公司正在迁移到Windows10,由于Windows10增强的安全性,许多旧的批处理文件将无法运行。
我环顾四周,找到了解决这个问题的办法,但我遇到了一个障碍。我有一个运行".msi“文件的批处理文件。我对.kix文件的修复是:
Set "kixCommand=\\abc123\Scripts\KIX\kix32.exe" *(abc123 is the network server name)*
Set "kixFile=\\abc123\Scripts\Apps\My Program\MyProgram.kix"
:UACPrompt
echo Set UAC = CreateObject^("Shell.Application"^) > "C:\ICS_Tools\Temp\getadmin.vbs"
echo UAC.ShellExecute "cmd.exe", "/c %kixCommand% %kixFile%", "", "runas", 1 >> "C:\ICS_Tools\Temp\getadmin.vbs"
"C:\ICS_Tools\Temp\getadmin.vbs"
del "C:\ICS_Tools\Temp\getadmin.vbs"
exit /B该批处理创建一个本地vbs脚本,以管理员权限运行该脚本,然后将其删除。
我尝试对.msi文件使用相同的方法。.vbs文件如下所示:
Set UAC = CreateObject("Shell.Application")
UAC.ShellExecute "msiexec.exe /i \\abc123\Scripts\Apps\My Program2\setup.msi", "", "runas", 1 然而,由于某些原因,它说它找不到命令(见附图)。

我真的很感谢一些专家在这方面的帮助。我尝试使用引号(因为文件夹名称"My Program2“中有空格),但似乎都不起作用。
发布于 2018-03-29 01:14:43
您的新代码将两个参数合并到可执行路径中。确实没有名为msiexec.exe /i \\abc123\Scripts\Apps\My Program2\setup.msi的可执行文件,因此失败是意料之中的。
相反,请尝试:
UAC.ShellExecute "msiexec.exe", "/i", "\\abc123\Scripts\Apps\My Program2\setup.msi", "", "runas", 1 您的原始代码(以及新代码的结尾部分)正确地实现了这一点。
https://stackoverflow.com/questions/49540456
复制相似问题