2017-02-28 64 views
2

我正在使用裸露的Win32Api。 我需要使用提升的權限啓動應用程序,應用程序沒有清單。所以,唯一的方法是使用ShellExecuteExrunAs動詞。它的工作原理,但我需要閱讀過程標準輸出。與CreateProcess我有STARTUPINFO我可以用來管道過程標準輸出。重定向ShellExecute的過程標準輸出(或其他一些提升和重定向的方式)

但是ShellExecuteEx沒有這樣的API。 那麼,我該如何提升重定向標準輸出?

+0

調用ShellExecute提升並CreateProcess進行重定向。 –

+0

我也嘗試將requireAdministrator添加到我的清單中,但我需要簽名以防止黃色警告 – user996142

+0

那麼,獲取代碼簽名證書然後。不難。 –

回答

1

這是不可能的。要讀取標準輸出CreateProcess是必需的。但CreateProcess無法啓動另一個進程提升...

如果可能,創建您自己的進程,您可能會啓動提升。這個過程可能捕獲stdout。使用一些IPC與此進程通信以獲取標準輸出。

或使用簡單的管道重定向。

此問題已詢問並且是duplicate to。 另請參閱此question about elevating

+1

「* CreateProcess無法啓動另一個進程提升*」 - 真,但['CreateProcessElevated()'](https://www.codeproject.com/Articles/19165/Vista-UAC-The-Definitive-Guide)可以。 –