Hi Leute,
versuche für Prozess jeweils die SID heraus zu bekommen. Das ganze funktioniert auch, allerdings
erhöht sich der Speicherbedarf meines Programms mit jedem Durchlauf (jedesmal 64 - 65 Prozesse)
um ca. 4KB.
Sicherheitsabfragen wurden zwecks Übersichtlichkeit entfernt:
Delphi-Quellcode:
function TBdsProcess.GetProcessOwnerSID(ProcID: Cardinal): Pointer;
var
hProc: THandle;
pOwner: PSID;
begin
Result := nil;
hProc := OpenProcess(PROCESS_QUERY_INFORMATION or GENERIC_READ, false, ProcID);
try
GetSecurityInfo(hProc, Cardinal(sotKernelObject), OWNER_SECURITY_INFORMATION, @pOwner, nil, nil, nil, nil);
if IsValidSID(pOwner) then Result := pOwner;
finally
CloseHandle(hProc);
end;
end;
Das Speicherloch entsteht definitiv in dieser Routine, da das Problem nicht auftritt, wenn sie nicht aufgerufen wird. Außerdem verdoppelt sich die Speicherverbrauchserhöhung, wenn ich die "selbe" Routine zusätzlich für die Gruppenzugehörigkeit aufrufe.
Irgendeine Idee???
Gruß
BlackDragon