windows 下gcc编译的软件获取管理员权限

        每次运行程序的时候需要管理员权限,一般可以右键管理员模式运行,或者在属性里设置默认管理员权限运行。但是当需要移动执行文件的位置后,必须重新设置管理员权限。这种操作相对来说麻烦,有没有一种办法直接在exe中声明呢?

        如果是在vs20**系列的微软支持软件包,则可以直接在项目属性中声明,这个项目需要管理员权限运行,那么之后编译后的程序可以直接使用管理员权限运行了。但是还有一部分人群讨厌体态臃肿的VS 20**软件,更加喜欢gcc这列纯编译环境,然后使用类似于记事本的编辑环境,这类人群想要编译后的程序直接拥有管理员权限,应该如何操作。

        网络教程很多,代码或者说明比较长。咱们这里就直接列出代码和项目,更为方便。

        测试环境VS code、mingw64、win11

结构:这是项目中需要有的原始文件,编译后可能多一些其他文件,也会列出

        test                                                       项目文件

        |----main.cpp                                        主要执行程序

        |----uac.manifest                                  微软的环境描述(xml格式)

        |----uac.rc                                             微软的资源描述文件

接下来对每个文件的内容进行展示

main.cpp包含的内容:这里仅为提权,所以功能--无

// main.cpp
#include<iostream>
int main(int argc, char* argv[])
{
    return 0;
}

  uac.manifest包含的内容:

<?xml version='1.0' encoding='UTF-8' standalone='yes'?> 
<assembly xmlns='urn:schemas-microsoft-com:asm.v1' manifestVersion='1.0'> 
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v3"> 
<security> 
<requestedPrivileges> 
<requestedExecutionLevel level='requireAdministrator' uiAccess='false' /> 
</requestedPrivileges> 
</security> 
</trustInfo> 
</assembly>

uac.rc包含的内容:这里的东西说明一下RT_MANIFEST这是一个宏,被winuser.h定义,感兴趣的可以跳转到winuser.h中查看。

#include <winuser.h>
1 RT_MANIFEST uac.manifest

编译命令:windres是mingw提供的一个工具,目的是编译微软的配套资料

windres --input-format=rc -O coff -i uac.rc -o uac.res

       此时项目文件中多了一个uac.res文件

         test                                                       项目文件

        |----main.cpp                                        主要执行程序

        |----uac.manifest                                  微软的环境描述(xml格式)

        |----uac.rc                                             微软的资源描述文件

        |----uar.res                                            二进制文件,可以使用十六进制阅读器打开如图

这里的实质就是uac.manifest资源文件中的内容,是一种可以被链接到执行文件中的东西。

编译命令:常规的编译命令,然后项目文件中会多一个代有管理员标志的可执行文件。

g++ -o main main.cpp uac.res

        至此,使用gcc编译win下可执行文件,并提升管理员权限的指导结束。

参考:但是更为精简,大段落的代码会让人不知从何处入手。

在MinGW或VS 2005 SP1环境下创建一个要求UAC权限的程序。 - bombless - 博客园 (cnblogs.com)

  • 18
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值