我需要使用Golang获取本地Windows计算机上当前登录的用户。我不是要查找当前正在运行该应用程序的用户,该用户可以从内置函数user.Current()
获取。
我可以从cmd调用query user
,这给了我所需的用户列表(需要字符串操作,但这不是问题)。
我尝试过的代码是:
out, err := exec.Command("query", "user")
if err != nil {
panic(err)
}
// ...do something with 'out'
这将产生错误panic: exit status 1
。如果这样做,也会发生同样的情况:
out, err := exec.Command("cmd", "/C", "query", "user")
...
答案 0 :(得分:1)
通常会遇到这类问题, 解决方案是这样进行:
syscall
软件包(或者,如果可用/需要,
助手3rd-party软件包)从Go发出这些呼叫。第一步可以是this 产生the solution 基本上就是“使用WTS”。
要走的路是
第二步比较棘手,但基本上您需要研究 别人怎么做。 参见this 和this 和this为例。
您可能还会在其中查看名为_windows*.go
的文件
the Go source of the syscall
package。
¹注意,即使在单用户计算机上,所有内容 与座位/会议管理相关的信息通过WTS发出 (但是cast割取决于Windows的特定风格)。至少从XP / W2k3开始就是这样。