2012-10-10 86 views
1

因此,我必須修復這個VB6應用程序A,它通過Shell命令(Shell(strCmd))以及C.exe args作爲其參數啓動B.exeB.exe將以args作爲參數啓動C.exe默認用戶權限調用可執行shell

此VB6應用程序在Windows XP和Windows 7下以最低的UAC設置工作。但是,在具有默認UAC設置的Windows 7(從最高的第二個缺口)下,C.exe會產生錯誤。當我沒有提升權限運行C.exe時,我得到同樣的錯誤。

我的問題是:

如果我跑A作爲管理員,確實B.exe以管理員身份運行,如果它是通過在A Shell命令執行?

如果不是,我的選擇是什麼,而不更改B.exeC.exe?如果可能的話,在運行時沒有提示用戶輸入密碼?

回答

2

Shell()不會更改特權或執行級別。如果一個可執行文件正在運行,那麼任何子進程也將被提升。

如果您想運行從未升級的進程升級的進程,則需要使用ShellExecute()runas動詞。

它不可能(直接)啓動一個從高架升級的升級過程。

+0

謝謝你的回覆。你知道這是否適用於W2KRunAsUser?該函數調用的進程是否默認以管理員身份運行? – swtdrgn

+0

我不知道那是什麼功能。抱歉。 – Deanna

+0

對不起,我的意思是CreateProcessWithLogonW。 – swtdrgn