所以,我必须修复这个VB6应用程序A
,它通过Shell命令(B.exe
)和Shell(strCmd)
作为参数启动C.exe args
。 B.exe
将以C.exe
为参数启动args
。
此VB6应用程序在Windows XP和Windows 7下运行,具有最低的UAC设置。但是,在具有默认UAC设置的Windows 7下(从最高位置开始的第二个档次),C.exe
会产生错误。当我在没有提升权限的情况下运行C.exe
时,我得到了同样的错误。
我的问题是:
如果我以管理员身份运行A
,B.exe
是否以管理员身份运行,如果它是通过A
中的Shell命令执行的?
如果没有,如果不对B.exe
和C.exe
进行更改,我有哪些选择?如果可能的话,在运行时中间没有提示用户输入密码?
答案 0 :(得分:2)
Shell()
不会更改权限或执行级别。如果可执行文件正在升级,那么任何子进程也将被提升。
如果您想要运行从未提升的流程提升的流程,则需要将ShellExecute()
与runas
动词一起使用。
不可能(直接)启动一个不受提升的过程。