以管理员身份运行Go程序

3

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

问题在于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)
}

这个问题有什么解决方案吗?

谢谢。


你尝试过使用 Geteuid 获取有效用户 ID 吗? - Volker
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的问题跟踪器上开一个新问题。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接