仅在需要时才在MFC应用程序中请求管理员权限

时间:2012-06-05 22:46:38

标签: visual-c++ mfc uac

我正在使用Visual C ++ 2010开发一个应用程序,该应用程序的目标是Windows 7.有一项任务是将一些值写入注册表,这只会在某些特殊情况下发生。因为在Windows 7中,需要具有管理员权限才能执行此操作。我怎样才能以某种方式对我的应用程序进行编程,当需要执行此类操作时,它会要求管理员权限,并且在启动时不会要求管理员权限。 感谢。

1 个答案:

答案 0 :(得分:4)

像马克说的那样,你无法根据需求提升自己的特权。一个快速的解决方案是编写一个单独的可执行文件来执行写入部分,并在需要时使用特定的命令行参数启动它。当然,这个可执行文件必须在其清单中具有“requireAdministrator”权限。

您还可以将此程序设计为服务并设置IPC机制,例如使用命名管道。管道本身可以使用安全描述符创建,允许普通用户访问它,确保以较低权限运行的程序能够写入它。

第二种方法的目的是消除第一种解决方案中出现的令人讨厌的UAC提示。