Go输出exe程序时,可以使用manifest文件调整程序的配置,使其运行时以管理员身份运行,对于需要写入系统目录等高权限操作时十分必要。

首先在工程目录新建manifest文件,写入如下内容:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<assemblyIdentity
    version="1.0.0.0"
    processorArchitecture="x86"
    name="setup.exe"
    type="win32"
/>
<description>My App</description>
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
    <security>
        <requestedPrivileges>
            <requestedExecutionLevel level="requireAdministrator" uiAccess="false"/>
        </requestedPrivileges>
    </security>
</trustInfo>
</assembly>

其中“level="requireAdministrator"”代表程序运行时将申请管理员权限,在UAC激活的情况下将弹出“用户账户控制”对话框,用户允许后,程序将以管理员身份运行。

之后,安装rsrc。

go get github.com/akavel/rsrc

在工程目录运行如下代码:

rsrc -manifest setup.exe.manifest -o app.syso

基于manifest文件生成一个.syso文件。该文件会被go build自动识别,因此下面进行正常的打包步骤即可。

manifest文件除了可以调整exe的权限,还可设置文件版本、描述信息等,具体可自行搜索。

标签: none

添加新评论