func OpenCurrentProcessToken() (*Token, error) { hProcess := wrappers.GetCurrentProcess() var hToken syscall.Handle if err := wrappers.OpenProcessToken(hProcess, wrappers.TOKEN_QUERY, &hToken); err != nil { return nil, NewWindowsError("OpenProcessToken", err) } return &Token{handle: hToken}, nil }
func OpenOtherProcessToken(pid uint) (*Token, error) { hProcess, err := wrappers.OpenProcess(wrappers.PROCESS_QUERY_INFORMATION, false, uint32(pid)) if err != nil { return nil, NewWindowsError("OpenProcess", err) } defer syscall.CloseHandle(hProcess) var hToken syscall.Handle if err := wrappers.OpenProcessToken(hProcess, wrappers.TOKEN_QUERY, &hToken); err != nil { return nil, NewWindowsError("OpenProcessToken", err) } return &Token{handle: hToken}, nil }