Einzelnen Beitrag anzeigen

Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#4

AW: Übersetzen der SID in echten Namen

  Alt 5. Nov 2015, 17:07
@napeths
Noch mal vielen Dank für den Schubser

Falls es jemanden interessiert:
Delphi-Quellcode:
Type
EXTENDED_NAME_FORMAT=(
    NameUnknown = 0,
    NameFullyQualifiedDN = 1,
    NameSamCompatible = 2,
    NameDisplay = 3,
    NameUniqueId = 6,
    NameCanonical = 7,
    NameUserPrincipal = 8,
    NameCanonicalEx = 9,
    NameServicePrincipal = 10,
    NameDnsDomain = 12
    );
...
function TranslateNameA(lpAccountName: LPCSTR; AccountNameFormat,
  DesiredNameFormat: EXTENDED_NAME_FORMAT; lpTranslatedName: LPSTR;
  var nSize: ULONG
  ): ByteBool; stdcall; external 'secur32.dllName 'TranslateNameA';

...
    StrSIDToName(dummy,name,domain,SIDTYPE);
    sidlist[i]:=sidlist[i]+'#'+format('%s\%s',[domain,name]);
    if SIDType=1 then begin
      indummy:=format('%s\%s',[domain,name]);
      buffersize:=0;
      {-- to determin buffersize }
      TranslateNameA(pansichar(indummy),NameSamCompatible,NameDisplay,nil,buffersize);
      getmem(buffer,buffersize*sizeof(char));
      if TranslateNameA(pansichar(indummy),NameSamCompatible,NameDisplay,buffer,buffersize) then begin
        setstring(dummy,buffer,buffersize);
        sidlist[i]:=sidlist[i]+' : '+trimright(dummy);
      end
      else
        showmessage(SysErrorMessage(GetLastError));
      freemem(buffer,buffersize);
Vielen Dank an Luckie, seine Beiträge zu diesem Themenbereich StrSIDToNamesind wirklich hilfreich.

Wenn ich mal Zeit habe, mach ich es etwas hübscher, aber im Augenblick reicht es.

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat