方法1、代码实现
http://zhidao.baidu.com/question/260744247.html
http://msdn.microsoft.com/zh-cn/library/bb384691.aspx
方法3、在资源文件中添加一个自己的manifest文件
方法1、代码实现
3.67 icePub_runByAdmin
l 函数原型:
int WINAPI icePub_runByAdmin(char *strAppPathName,char *strSuParam)
输入:strAppPathName 带路径应用程序文件名;为空则默认本身应用程序
strSuParam 以管理员权限启动程序的命令行参数;为空则默认为"su "
输出:
l VC连接Lib方式声明
__declspec(dllexport)
int WINAPI icePub_runByAdmin(char *strAppPathName,char *strSuParam);
l 动态调用例程
VC sample 代码:
int runByAdmin(void)
{
int retCode=-1;
typedef int (WINAPI ICEPUB_RUNBYADMIN)(char *strAppPathName,char *strSuParam);
ICEPUB_RUNBYADMIN *icePub_runByAdmin = 0;
HINSTANCE hDLLDrv = LoadLibrary("icePubDll.dll");
if(hDLLDrv)
icePub_runByAdmin = (ICEPUB_RUNBYADMIN *)GetProcAddress(hDLLDrv, "icePub_runByAdmin");
if(icePub_runByAdmin)
retCode=icePub_runByAdmin("","");
if(hDLLDrv)
FreeLibrary(hDLLDrv);
if(retCode == 0)
exit(0);
if(retCode == -1)
AfxMessageBox("以管理员启动失败,请手动启动");
return retCode;
}
/MANIFESTUAC(将 UAC 信息嵌入到清单中)
指定是否将用户帐户控制 (UAC) 信息嵌入到程序清单中。
如果您在命令行上指定多个 /MANIFESTUAC 选项,则最后输入的选项优先级最高。
/MANIFESTUAC:level 的选项包括:
-
asInvoker:应用程序将使用与启动它的进程相同的权限运行。 可通过选择“以管理员身份运行”将应用程序提升为更高权限。
-
highestAvailable:应用程序将使用可能的最高权限级别运行。 如果启动该应用程序的用户为管理员组的一个成员,则此选项与 requireAdministrator 相同。 如果可用的最高权限级别高于打开进程的级别,则系统将提示提供凭据。
-
requireAdministrator:应用程序将使用管理员权限运行。 启动该应用程序的用户必须是管理员组的一个成员。 如果打开进程未使用管理权限运行,则系统将提示提供凭据。
您可以通过使用 /MANIFESTUAC:fragment 选项在一个步骤中指定 level 和 uiAccess 值。 代码片段的格式必须是:
在 Visual Studio 开发环境中设置此链接器选项
-
打开该项目的“属性页”对话框。 有关详细信息,请参见如何:打开项目属性页。
-
展开“配置属性”节点。
-
展开“链接器”节点。
-
选择“清单文件”属性页。
-
修改“启用用户帐户控制(UAC)”、“UAC 执行级别”和“UAC 绕过 UI 保护”属性。
以编程方式设置此链接器选项
方法3、
在MinGW或VS 2005 SP1环境下创建一个要求UAC权限的程序。
HDU 1520 Anniversary party
POJ 1217 FOUR QUARTERS
POJ 2184 Cow Exhibition
HDU 2639 Bone Collector II
POJ 3181 Dollar Dayz
POJ 1787 Charlie's Change
POJ 2063 Investment
HDU 1114 Piggy-Bank
Lca hdu 2874 Connections between cities