github.com/elastic/gosigar@v0.14.3/sys/windows/privileges_test.go (about) 1 // +build windows 2 3 package windows 4 5 import ( 6 "syscall" 7 "testing" 8 9 "github.com/stretchr/testify/assert" 10 "golang.org/x/sys/windows" 11 ) 12 13 func TestGetDebugInfo(t *testing.T) { 14 debug, err := GetDebugInfo() 15 if err != nil { 16 t.Fatal(err) 17 } 18 19 t.Logf("%+v", debug) 20 } 21 22 func TestGetTokenPrivileges(t *testing.T) { 23 h, err := windows.GetCurrentProcess() 24 if err != nil { 25 t.Fatal("GetCurrentProcess", err) 26 } 27 28 var token syscall.Token 29 err = syscall.OpenProcessToken(syscall.Handle(h), syscall.TOKEN_QUERY, &token) 30 if err != nil { 31 t.Fatal("OpenProcessToken", err) 32 } 33 34 privs, err := GetTokenPrivileges(token) 35 if err != nil { 36 t.Fatal("GetTokenPrivileges", err) 37 } 38 39 for _, priv := range privs { 40 t.Log(priv) 41 } 42 } 43 44 func TestEnableTokenPrivileges(t *testing.T) { 45 h, err := windows.GetCurrentProcess() 46 if err != nil { 47 t.Fatal("GetCurrentProcess", err) 48 } 49 50 var token syscall.Token 51 err = syscall.OpenProcessToken(syscall.Handle(h), syscall.TOKEN_ADJUST_PRIVILEGES|syscall.TOKEN_QUERY, &token) 52 if err != nil { 53 t.Fatal("OpenProcessToken", err) 54 } 55 56 privs, err := GetTokenPrivileges(token) 57 if err != nil { 58 t.Fatal("GetTokenPrivileges", err) 59 } 60 61 priv, found := privs[SeDebugPrivilege] 62 if found { 63 t.Logf("Token has privilege: %v", priv) 64 } else { 65 t.Logf("Token is missing privilege %v", SeDebugPrivilege) 66 } 67 68 err = EnableTokenPrivileges(token, SeDebugPrivilege) 69 if err != nil { 70 t.Fatal("EnableTokenPrivileges", err) 71 } 72 73 privs, err = GetTokenPrivileges(token) 74 if err != nil { 75 t.Fatal("GetTokenPrivileges", err) 76 } 77 78 priv, found = privs[SeDebugPrivilege] 79 if found && assert.True(t, priv.Enabled, "%v is not enabled. %v", SeDebugPrivilege, priv) { 80 t.Logf("%v is enabled.", SeDebugPrivilege) 81 } 82 }