【发布时间】:2011-12-30 03:58:49
【问题描述】:
我的应用需要在运行时执行一些特权操作。例如,当用户第一次运行我的应用程序时,我必须创建并格式化一个虚拟驱动器。我使用未记录的 api formatex 来完成格式化工作,但 formatex 需要管理员权限。如果操作系统是 vista 或更高版本,我可以使用“COM Elevation Moniker”提示 UAC 对话框,它工作正常。但在 xp 上,这种技术不适合,所以我使用模拟方法。 如果应用程序以受限用户身份运行,我会像这样格式化:
CredUIPromptForCredentials() -> prompt to get administrator credentials
LogonUser()
ImpersonateLoggedOnUser()
formatex()
RevertToSelf()
formatex 仍然失败... 当然,以管理员身份运行我的应用程序可以,但这并不好,我的应用程序是按用户安装的,而不是按机器安装的,它应该在当前用户上下文下工作,即使用户是 受限用户。
如何在运行时正确提升我的应用程序以完成格式化工作?有人帮忙吗?
【问题讨论】:
标签: c++ windows security winapi