【问题标题】:Running Go Program as Admin以管理员身份运行 Go 程序
【发布时间】:2013-07-10 12:01:35
【问题描述】:

我正在尝试在 Windows 中运行具有管理员权限的 Go 程序。就像 Linux 中的 sudo 一样。为此,我以管理员身份启动 cmd。我还尝试了 runas 管理员命令。

问题是os.Getuid() 函数返回-1。程序对其进行检查,如果它不是 0,则表明您没有管理员权限。

来自 Go 程序 Gor (listener.go) 的代码 sn-p:

if os.Getuid() != 0 {
    fmt.Println("Please start the listener as root or sudo!")
    fmt.Println("This is required since listener sniff traffic on given port.")
    os.Exit(1)
}

这个问题有解决办法吗?

谢谢

【问题讨论】:

  • 您是否尝试过Geteuid 的有效 uid?

标签: windows command-line operating-system go admin


【解决方案1】:

Go 的旗舰版本是由主要的 Go 作者为 Linux/Darwin 开发的,其架构允许其他操作系统。后来,其他人出现并将 Go 移植到 Windows 等其他操作系统。某些 Windows 端口存在缺陷且不完整。此外,某些 Linux/Darwin 功能,例如安全模型,在 Windows 中没有直接的类似物。

syscall_windows.go:

. . .
// TODO(brainman): fix all needed for os
. . .
func Getuid() (uid int) { return -1 }
. . .

在 Go issue tracker 上打开一个新问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-11-10
    • 2017-08-23
    • 2011-12-29
    • 2013-05-31
    • 2011-09-24
    • 2010-12-19
    相关资源
    最近更新 更多