3

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

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

Go 程序 Gor (listener.go) 的代码片段:

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)
}

这个问题有什么解决办法吗?

谢谢

4

1 回答 1

4

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问题跟踪器上打开一个新问题。

于 2013-07-10T13:13:03.510 回答