如何使用 Go 在 Windows 上请求管理权限

我想要为我的应用程序实现的是,每次我想运行它时都不需要右键单击并选择以管理员身份运行。我希望 Windows 提示我像其他 Windows 应用程序一样获得管理员权限。


考虑以下代码:


package main


import (

    "fmt"

    "io/ioutil"

    "time"

)


func main() {

    err := ioutil.WriteFile("C:/Windows/test.txt", []byte("TESTING!"), 0644)

    if err != nil {

        fmt.Println(err.Error())

        time.Sleep(time.Second * 3)

    }

}

如果您编译它并双击它,它将打印:


打开:C:\Windows\test.txt:访问被拒绝。


但是,如果您右键单击并以管理员身份运行,它将创建并写入文件。


如何仅通过双击它来请求管理员权限?


拉丁的传说
浏览 516回答 2
2回答

叮当猫咪

您需要嵌入一个清单文件,该文件将告诉 Windows 您需要提升的权限。该页面的示例是:<?xml version="1.0" encoding="UTF-8" standalone="yes"?><assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"><assemblyIdentity&nbsp; &nbsp; version="9.0.0.0"&nbsp; &nbsp; processorArchitecture="x86"&nbsp; &nbsp; name="myapp.exe"&nbsp; &nbsp; type="win32"/><description>My App</description><trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">&nbsp; &nbsp; <security>&nbsp; &nbsp; &nbsp; &nbsp; <requestedPrivileges>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <requestedExecutionLevel level="requireAdministrator" uiAccess="false"/>&nbsp; &nbsp; &nbsp; &nbsp; </requestedPrivileges>&nbsp; &nbsp; </security></trustInfo></assembly>这个疯狂的帖子建议使用rsrc应该为您解决问题。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go