Форум: "WinAPI";
Текущий архив: 2013.03.22;
Скачать: [xml.tar.bz2];
ВнизОпределение пользователя который запустил процесс Найти похожие ветки
← →
denis_l (2009-12-22 22:32) [0]Есть приложение, в котором я получаю список процессов в виде дерева TreeView. О процессе знаю следующее:
1) Имя процесса (например Project1.exe)
2) ID процесса (PID)
Необходимо определить пользователя, от имени которого запущен процесс.
Если можно - пример!
← →
Игорь Шевченко © (2009-12-22 23:51) [1]Пример можно:
function SIDToName (const SID: PSID): string;
var
Use: SID_NAME_USE;
DomainName: array;0..1024] of char;
DomainNameLength: DWORD;
Name: array[0..1024] of char;
NameLength: DWORD;
begin
DomainNameLength := SizeOf(DomainName);
NameLength := SizeOf(Name);
if not LookupAccountSid (nil, SID, Name, NameLength, DomainName,
DomainNameLength, Use) then
Result := "***"
else
Result := Name;
end;
function GetUserName (ProcessId: Cardinal): string;
var
AccessToken: THandle;
SidInfo: PSIDANDATTRIBUTES;
ReturnLength: DWORD;
ProcessHandle: THandle;
begin
Result := "";
ProcessHandle := OpenProcess(PROCESS_QUERY_INFORMATION, false,
ProcessId);
if ProcessHandle = 0 then
Exit;
try
if not OpenProcessToken(ProcessHandle, TOKEN_QUERY, AccessToken) then
Exit;
GetMem (SidInfo, 4096);
try
Win32Check(GetTokenInformation(AccessToken, TokenUser, SidInfo, 4096,
ReturnLength));
Result := SidToName(SidInfo^.Sid);
finally
FreeMem(SidInfo);
CloseHandle(AccessToken);
end;
finally
CloseHandle(ProcessHandle);
end;
end;
Страницы: 1 вся ветка
Форум: "WinAPI";
Текущий архив: 2013.03.22;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.073 c