Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
FreePascal / Lazarus
|
AW: Übersetzen der SID in echten Namen
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.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
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
|
|
Zitat
|