我正在使用裸露的Win32Api。 我需要使用提升的權限啓動應用程序,應用程序沒有清單。所以,唯一的方法是使用ShellExecuteEx
和runAs
動詞。它的工作原理,但我需要閱讀過程標準輸出。與CreateProcess
我有STARTUPINFO
我可以用來管道過程標準輸出。重定向ShellExecute的過程標準輸出(或其他一些提升和重定向的方式)
但是ShellExecuteEx
沒有這樣的API。 那麼,我該如何提升和重定向標準輸出?
我正在使用裸露的Win32Api。 我需要使用提升的權限啓動應用程序,應用程序沒有清單。所以,唯一的方法是使用ShellExecuteEx
和runAs
動詞。它的工作原理,但我需要閱讀過程標準輸出。與CreateProcess
我有STARTUPINFO
我可以用來管道過程標準輸出。重定向ShellExecute的過程標準輸出(或其他一些提升和重定向的方式)
但是ShellExecuteEx
沒有這樣的API。 那麼,我該如何提升和重定向標準輸出?
這是不可能的。要讀取標準輸出CreateProcess是必需的。但CreateProcess無法啓動另一個進程提升...
如果可能,創建您自己的進程,您可能會啓動提升。這個過程可能捕獲stdout。使用一些IPC與此進程通信以獲取標準輸出。
或使用簡單的管道重定向。
此問題已詢問並且是duplicate to。 另請參閱此question about elevating。
「* CreateProcess無法啓動另一個進程提升*」 - 真,但['CreateProcessElevated()'](https://www.codeproject.com/Articles/19165/Vista-UAC-The-Definitive-Guide)可以。 –
調用ShellExecute提升並CreateProcess進行重定向。 –
我也嘗試將requireAdministrator添加到我的清單中,但我需要簽名以防止黃色警告 – user996142
那麼,獲取代碼簽名證書然後。不難。 –