从Shell调用可执行文件的默认用户权限

时间:2012-10-10 13:22:37

标签: vba windows-7 vb6 uac

所以,我必须修复这个VB6应用程序A,它通过Shell命令(B.exe)和Shell(strCmd)作为参数启动C.exe argsB.exe将以C.exe为参数启动args

此VB6应用程序在Windows XP和Windows 7下运行,具有最低的UAC设置。但是,在具有默认UAC设置的Windows 7下(从最高位置开始的第二个档次),C.exe会产生错误。当我在没有提升权限的情况下运行C.exe时,我得到了同样的错误。

我的问题是:

如果我以管理员身份运行AB.exe是否以管理员身份运行,如果它是通过A中的Shell命令执行的?

如果没有,如果不对B.exeC.exe进行更改,我有哪些选择?如果可能的话,在运行时中间没有提示用户输入密码?

1 个答案:

答案 0 :(得分:2)

Shell()不会更改权限或执行级别。如果可执行文件正在升级,那么任何子进程也将被提升。

如果您想要运行从未提升的流程提升的流程,则需要将ShellExecute()runas动词一起使用。

不可能(直接)启动一个不受提升的过程。