2
我的應用程序需要在運行時執行一些特權操作。例如,當用戶第一次運行我的應用程序時,我必須創建並格式化虛擬驅動器。我使用無證api formatex來完成fomating工作,但是formatex需要管理員權限。如果操作系統是Vista或更高版本,我可以用'COM Elevation Moniker'提示UAC對話框,它工作正常。但在XP上,這種技術不適合,所以我使用模擬方法。 如果應用程序運行所限制的用戶,我在格式化是這樣的:我如何在運行時在運行時提升我的進程win xp
CredUIPromptForCredentials() -> prompt to get administrator credentials
LogonUser()
ImpersonateLoggedOnUser()
formatex()
RevertToSelf()
formatex仍然失敗...... 當然,運行我的應用程序作爲管理員的作品,但它是不好的,是安裝我的應用程序根據用戶而不是每臺機器,即使用戶是受限用戶,也應該在當前用戶環境下工作。
如何在運行時正確提升我的應用程序以執行格式化作業?任何一個幫助?
這是我在我的應用程序做(不IsUserAdmin()檢查,雖然 - 我讓Win32 API函數報告'ERROR_ELEVATION_NEEDED'我代替),以及它的工作原理很好。 – 2011-12-30 18:59:42
感謝dimitri的回答。我最終使用dimitri提出的方法,但有點不同。我使用CredUIPromptForCredentials() - > LogonUser() - > IsUserAdmin(我的功能) - > CreateProcessWithLogonW循環來確保管理員憑證。現在一切順利。 – toki 2012-01-04 07:44:23