以管理员身份运行Go程序

时间:2013-07-10 12:01:35

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

我正在尝试在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)
}

这个问题有解决方法吗?

由于

1 个答案:

答案 0 :(得分:4)

Go的旗舰版本由Linux / Darwin的主要Go作者开发,其架构允许其他操作系统。后来,其他人出现并将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上打开一个新问题。