当用户已经是管理员时通过 C++ 激活管理员 [以管理员身份运行]

Gre*_*ego -1 c++ windows uac

嗯,我注意到在 Windows 7 上,有时即使你是管理员,你也不能做很多事情,可能是某种错误,我的应用程序我在启动程序之前检查用户是否是管理员,因为我的程序创建文件位于受保护的默认文件夹中,例如根文件夹 ( C: ),如果您不是 Windows 7 的管理员,则只能在那里创建文件夹。

因此,如果我右键单击我的应用程序并转到“以管理员身份运行”,它就可以正常工作。有没有办法让我的应用程序自动以管理员身份运行?我希望能够编写一行代码,例如:ActivateAdministrator();并且完全可用于代码,因为我更改了属性,使用ifstream.

Ben*_*ell 5

您可以向可执行文件添加清单 - http://msdn.microsoft.com/en-us/library/bb756929.aspx

如果用户在 UAC 开启的系统上运行,并且不是管理员,requestedExecutionLevel level="requireAdministrator"则在您的应用程序可以以管理权限运行之前,包含的清单将提示输入管理员密码。(需要管理员权限意味着不正确的密码或没有密码将完全停止运行)

如果他们是打开 UAC 的管理员,那么相同的清单将导致是/否提示,询问您的应用程序是否应该被授予管理权限。

当然,真正的问题是您的应用程序正在执行的任何需要管理权限的操作都需要进行检查。

大多数情况下,普通用户级应用程序根本不需要特权。这确实是一个应用程序设计问题 - 您的应用程序在做什么需要管理员权限?是不是真的有必要吗?例如,如果您正在修改文件,那么为什么这些文件位于文件系统的受保护区域而不是用户的配置文件空间中?