windows - 以管理员身份运行 Go 程序

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

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

谢谢

最佳答案

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 .

关于windows - 以管理员身份运行 Go 程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17570147/

相关文章:

windows - Docker 无法在 Windows 上启动 : Not Enough memory to start docker

javascript - 是否可以在 Chromium OS 而不是 Chromium 上构建 Electron 应用程序?

windows - 在 Windows PowerShell 中运行 VS 2017 构建工具

python - 在 Python 脚本中包装交互式命令行应用程序

java - 通过 uDeploy 在 Windows 命令行中将 java 作为单独的进程运行

c++ - 我的 C++ 程序不会从命令行读取多个文件

javascript - 以编程方式更改默认 PDF 阅读器?

linux - 可以运行同一可执行文件的多个实例吗?

c++ - 如何在本地 Windows 网络上发现我的应用程序的所有其他实例?

c++ - 如何在 C++ 中检查操作系统是 Windows 还是 Debian?