MCPcopy Create free account
hub / github.com/derceg/explorerplusplus / GetProcessOwner

Function GetProcessOwner

Explorer++/Helper/ProcessHelper.cpp:25–65  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

23}
24
25BOOL GetProcessOwner(DWORD dwProcessId, TCHAR *szOwner, size_t cchMax)
26{
27 BOOL success = FALSE;
28
29 HANDLE hProcess = OpenProcess(PROCESS_QUERY_INFORMATION, FALSE, dwProcessId);
30
31 if(hProcess != NULL)
32 {
33 HANDLE hToken;
34 BOOL bRet = OpenProcessToken(hProcess, TOKEN_QUERY, &hToken);
35
36 if(bRet)
37 {
38 DWORD dwSize = 0;
39 bRet = GetTokenInformation(hToken, TokenUser, NULL, 0, &dwSize);
40
41 if(!bRet && GetLastError() == ERROR_INSUFFICIENT_BUFFER)
42 {
43 auto *pTokenUser = reinterpret_cast<TOKEN_USER *>(GlobalAlloc(GMEM_FIXED, dwSize));
44
45 if(pTokenUser != NULL)
46 {
47 bRet = GetTokenInformation(hToken, TokenUser, reinterpret_cast<LPVOID>(pTokenUser), dwSize, &dwSize);
48
49 if(bRet)
50 {
51 success = FormatUserName(pTokenUser->User.Sid, szOwner, cchMax);
52 }
53
54 GlobalFree(pTokenUser);
55 }
56 }
57
58 CloseHandle(hToken);
59 }
60
61 CloseHandle(hProcess);
62 }
63
64 return success;
65}
66
67BOOL SetProcessTokenPrivilege(DWORD dwProcessId, const TCHAR *PrivilegeName, BOOL bEnablePrivilege)
68{

Callers 1

UpdateWindowTextMethod · 0.85

Calls 1

FormatUserNameFunction · 0.85

Tested by

no test coverage detected