1

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

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

我的问题是:

如果我A以管理员身份B.exe运行,如果通过 Shell 命令执行,是否以管理员身份运行A

如果没有,在不更改B.exeand的情况下我有哪些选择C.exe?如果可能,在运行时不提示用户输入密码?

4

1 回答 1

2

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

如果要运行从未提升的进程提升的进程,则需要使用ShellExecute()动词runas

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

于 2012-10-10T13:58:41.590 回答