hostSync/utils/utils_windows.go

36 lines
662 B
Go

//go:build windows
// +build windows
package utils
import (
"golang.org/x/sys/windows"
)
// isRunningAsAdmin 检查当前进程是否以管理员权限运行 (Windows)
func isRunningAsAdmin() bool {
var sid *windows.SID
// 获取内置管理员组的SID
err := windows.AllocateAndInitializeSid(
&windows.SECURITY_NT_AUTHORITY,
2,
windows.SECURITY_BUILTIN_DOMAIN_RID,
windows.DOMAIN_ALIAS_RID_ADMINS,
0, 0, 0, 0, 0, 0,
&sid)
if err != nil {
return false
}
defer windows.FreeSid(sid)
// 获取当前进程的访问令牌
token := windows.Token(0)
member, err := token.IsMember(sid)
if err != nil {
return false
}
return member
}