Мое приложение должно выполнять некоторые привилегированные операции во время выполнения.Например, когда пользователь впервые запускает мое приложение, мне нужно создать и отформатировать виртуальный диск.Я использую недокументированный api formatex, чтобы выполнить работу fomating, но formatex нужны права администратора.Если ОС Vista или более поздняя, я могу предложить диалоговое окно UAC с «COM Elevation Moniker», и он работает нормально.Но на XP этот метод не подходит, поэтому я использую метод олицетворения.если приложение запускается как пользователь с ограниченными правами, я выполняю форматирование следующим образом:
CredUIPromptForCredentials() -> prompt to get administrator credentials
LogonUser()
ImpersonateLoggedOnUser()
formatex()
RevertToSelf()
formatex по-прежнему не работает ... Конечно, запустить мое приложение от имени администратора будет работать, но это не хорошо, мое приложение установленокак для пользователя, а не для компьютера, который должен работать в контексте текущего пользователя, даже если пользователь является пользователем с ограниченными правами.
Как я могу правильно поднять свое приложение во время выполнения, чтобы выполнить форматирующую работу?Любая помощь?