Einzelnen Beitrag anzeigen

Benutzerbild von Zacherl
Zacherl

Registriert seit: 3. Sep 2004
4.629 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#4

Re: XP: OpenProcessToken bei NETZWERKDIENST: Zugriff verweig

  Alt 26. Sep 2009, 13:36
Leider nicht zufriedenstellend:

Delphi-Quellcode:
var
  dwBufSize: DWord;
  bSuccess: Boolean;
  Descriptor: PSecurityDescriptor;
  SID: Pointer;
  Defaulted: LongBool;
begin
  Descriptor := nil;
        bSuccess := GetKernelObjectSecurity(hProcess,
          OWNER_SECURITY_INFORMATION, nil, 0, dwBufSize);
        while (not bSuccess) and (GetLastError = ERROR_INSUFFICIENT_BUFFER) do
        begin
          ReallocMem(Descriptor, dwBufSize);
          bSuccess := GetKernelObjectSecurity(hProcess,
            OWNER_SECURITY_INFORMATION, Descriptor, dwBufSize, dwBufSize);
        end;
        if (bSuccess) then
        begin
          if GetSecurityDescriptorOwner(Descriptor, SID, Defaulted) then
          begin
            Result := SID;
          end;
        end;
Teilweise funktioniert ist, bei den meisten Prozessen aber wird eine SECURITY_CREATOR_SID_AUTHORITY oder SECURITY_LOCAL_SID_AUTHORITY zurückgegeben. Wie kann ich nun die wirkliche SID ermitteln? Ich brauche diese, um sie mit der SYSTEM RID, der LOCALSERVIVE RID und der NETWORKSERVICE RID zu vergleichen.
  Mit Zitat antworten Zitat