//go:build windows // +build windows package ganserv import ( "fmt" "os" "syscall" "golang.org/x/sys/windows" ) //Use admin permission to read auth token on Windows func readAuthTokenAsAdmin() (string, error) { verb := "runas" exe, _ := os.Executable() cwd, _ := os.Getwd() authTokenPath := "C:\\ProgramData\\ZeroTier\\One\\authtoken.secret" args := fmt.Sprintf("cmd /C type %s", authTokenPath) verbPtr, _ := syscall.UTF16PtrFromString(verb) exePtr, _ := syscall.UTF16PtrFromString(exe) cwdPtr, _ := syscall.UTF16PtrFromString(cwd) argPtr, _ := syscall.UTF16PtrFromString(args) var showCmd int32 = 1 //SW_NORMAL err := windows.ShellExecute(0, verbPtr, exePtr, argPtr, cwdPtr, showCmd) if err != nil { return "", err } return "", nil } //Check if admin on Windows func isAdmin() bool { _, err := os.Open("\\\\.\\PHYSICALDRIVE0") if err != nil { return false } return true }