VS 编译Win32程序默认获取管理员权限

前段时间一直编译x64程序,获取管理员权限也比较简单,直接设置UAC Execution Level为requireAdministrator即可。可是编译Win32程序的时候单独只修改这一项居然不起作用。对比配置之后,发现这个新建的工程的默认配置和x64稍微有点不一样,现在也不记得有哪些不一样了。


做好如此配置后,程序右下角就多了一个护盾图标,双击会申请管理员权限。

对比发现Generate Manifest中,Win32默认为No,然后查看Manifest File对应的路径,里面是一些配置信息

<?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>

只有权限配置,也就是说只有改动的配置信息,如果没有使用此配置,则程序不具备这些配置,也就是没有管理员权限。百度后发现这个配置也可以有mt.exe手动设置。

例如打开VS2008的命令行,然后执行mt.exe 

mt.exe    -manifest      <manifest-file>        -outputresource:<exe-file>

<manifest-file>是配置文件的路径

<exe-file>是编译出来的二进制文件的路径

然后普通的没有权限的二进制文件也过了一个护盾的图标,双击会申请管理员权限了

猜你喜欢

转载自blog.csdn.net/youyudexiaowangzi/article/details/79202003