123456789101112131415161718192021222324252627282930313233343536373839404142434445 |
- //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
- }
|