【问题标题】:Default User Privilege of Calling Executable from Shell从 Shell 调用可执行文件的默认用户权限
【发布时间】:2012-09-30 23:40:17
【问题描述】:

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

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

我的问题是:

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

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

【问题讨论】:

    标签: vba windows-7 vb6 uac


    【解决方案1】:

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

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

    不可能(直接)启动从提升的进程未提升的进程。

    【讨论】:

    • 感谢您的回复。你知道这是否同样适用于 W2KRunAsUser?该函数调用的进程是否默认以管理员身份运行?
    • 我不知道那个函数是什么。对不起。
    • 对不起,我的意思是 CreateProcessWithLogonW。
    • 看起来 CreateProcessWithLogonW 是问题所在。谢谢。
    猜你喜欢
    • 1970-01-01
    • 2013-09-09
    • 1970-01-01
    • 2014-01-26
    • 2021-12-19
    • 1970-01-01
    • 1970-01-01
    • 2019-10-25
    • 2010-09-18
    相关资源
    最近更新 更多