当前位置: 首页 > 面试题库 >

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

闾丘康安
2023-03-14
问题内容

我想实现我的应用程序,是 不是 需要右键单击并选择 以管理员身份运行
我要运行它每次。我希望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:拒绝访问。

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

如何使其仅通过双击即可要求管理员权限?


问题答案:

您需要嵌入一个清单文件,该文件将告诉Windows您想要提升的特权。

该页面上的示例是:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<assemblyIdentity
    version="9.0.0.0"
    processorArchitecture="x86"
    name="myapp.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>

这篇坚果文章表明,使用rsrc应该可以解决问题。



 类似资料:
  • 问题内容: 当我尝试通过Java ProcessBuilder类在任务计划程序中创建新任务时,出现Windows Vista拒绝访问错误。在XP上,它可以正常工作。 当我使用“以管理员身份运行”选项时,它也将在Vista上运行。 但是,这是一个额外的步骤,用户可能对此一无所知。当用户仅双击应用程序图标时,它将失败并拒绝访问。我的问题是如何在启动后立即强制Java应用重新获得管理员权限? 问题答案:

  • 问题内容: 我需要能够从Go应用程序中管理Windows本地用户帐户,并且似乎没有使用CGo,就没有本机绑定。 我的最初搜索使人们说,最好使用“ exec.Command”运行“ net user”命令,但是在解析响应代码时,这似乎很混乱且不可靠。 我发现可以在netapi32.dll库中找到处理此类事件的函数,但是由于Go本身不支持Windows头文件,因此调用这些函数似乎并不容易。 以http

  • 我在Windows2016服务器上安装了Keycloak,并通过Ansible创建了一个管理用户,到目前为止还不错。现在,我想通过Ansible安装管理API,以便通过Ansible配置Keycloak。当我在windows计算机的命令行中本地运行接下来的3个命令时,所有命令都正常工作:1。安装API:从bin文件夹运行 连接到API:然后要求我进行身份验证:以realm master的用户key

  • 我的electron中需要修改注册表,但是提示access is denied。 如何向用户索要管理员权限,然后执行我的js代码呢?

  • 问题内容: 所以我用Go编写了这个RESTful后端,它将通过跨站点HTTP请求来调用,即从另一个站点(实际上,只是另一个端口,但是同源策略启动了,所以我们来了)提供的内容中调用。 在这种情况下,在某些情况下,用户代理将发送预检OPTIONS请求,以检查实际请求是否可以安全发送。 我的问题是如何在Go上下文中最好地处理和充分响应这些预检请求。我构想的方法感觉不太优雅,我想知道是否还有其他我没有想到

  • 授权管理器为将基于角色的访问控制集成到应用程序提供了灵活的框架。它让使用这些应用程序的管理员可提供对那些与作业功能相关的已分配用户角色进行访问的权限。