Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Betriebssysteme (https://www.delphipraxis.net/27-betriebssysteme/)
-   -   Übersetzen der SID in echten Namen (https://www.delphipraxis.net/187186-uebersetzen-der-sid-echten-namen.html)

p80286 5. Nov 2015 10:31

Betriebssystem: Win 7

Übersetzen der SID in echten Namen
 
Hallo zusammen,

ich habe eine liste mit SIDs und suche hierzu den Klarnamen.
Für den aktuellen Benutzer bekomme ich das über
Delphi-Quellcode:
GetUserNameEx
mit 3=NameDisplay oder 8=NameUserPrincipal (etwas anderes Format aber für meine Zwecke ausreichend)

Die einzige Möglichkeit SIDs zu übersetzen, die ich kenne, ist
Delphi-Quellcode:
LookupAccountSidA
die aber nur den Benutzer im Format Domäne\UserID ausspuckt.

Gibt es da etwas, was ich übersehen habe, oder müßte ich mich um andere Lösungen (LDAP) bemühen ?

Gruß
K-H

nahpets 5. Nov 2015 10:55

AW: Übersetzen der SID in echten Namen
 
Ansätze zum Weitersuchen:

c-sid-einer-lokalen-gruppe-in-den-gruppenname-bersetzen

how-can-i-convert-from-a-sid-to-an-account-name-in-c-sharp

the-best-way-to-resolve-display-username-by-sid

p80286 5. Nov 2015 11:33

AW: Übersetzen der SID in echten Namen
 
Vielen dank!

Über diese Wege bin ich gerade an TransLateName geraten, mal schauen ob das funktioniert

Gruß
K-H

p80286 5. Nov 2015 16:07

AW: Übersetzen der SID in echten Namen
 
@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.dll' Name '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

Luckie 5. Nov 2015 16:34

AW: Übersetzen der SID in echten Namen
 
Ich wusste doch, dass es da was von mir gibt. Aber warum hat meine Funktion dir nicht gereicht?

p80286 5. Nov 2015 16:43

AW: Übersetzen der SID in echten Namen
 
Du und ich wir wissen was eine UID ist, Chefs brauchen da etwas mehr:wink:
und bevor ich da eine Übersetzungstabelle mit ein paar hundert Einträgen bastele, bemühe ich doch das System.
Und bei uns lehnen sich die UIDs an den Familiennamen an, falls dann jemand heiratet oder geschieden wird oder ..., behält er die alte UID.

(btw. gibt's eigentlich eine Möglichkeit Gruppen und Aliasmitglieder auszulesen?)

Gruß
K-H


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:23 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz