diff options
Diffstat (limited to 'base/process_util_win.cc')
-rw-r--r-- | base/process_util_win.cc | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/base/process_util_win.cc b/base/process_util_win.cc index 45a23e8..265c26f 100644 --- a/base/process_util_win.cc +++ b/base/process_util_win.cc @@ -34,6 +34,7 @@ ProcessHandle GetCurrentProcessHandle() { } bool OpenProcessHandle(ProcessId pid, ProcessHandle* handle) { + // TODO(phajdan.jr): Take even more permissions out of this list. ProcessHandle result = OpenProcess(PROCESS_DUP_HANDLE | PROCESS_TERMINATE | PROCESS_QUERY_INFORMATION | @@ -47,6 +48,21 @@ bool OpenProcessHandle(ProcessId pid, ProcessHandle* handle) { return true; } +bool OpenPrivilegedProcessHandle(ProcessId pid, ProcessHandle* handle) { + ProcessHandle result = OpenProcess(PROCESS_DUP_HANDLE | + PROCESS_TERMINATE | + PROCESS_QUERY_INFORMATION | + PROCESS_VM_READ | + SYNCHRONIZE, + FALSE, pid); + + if (result == INVALID_HANDLE_VALUE) + return false; + + *handle = result; + return true; +} + void CloseProcessHandle(ProcessHandle process) { CloseHandle(process); } |