D
Da ich jedoch noch nie Delphi gesehen habe, wird das bisschen dauern.
Hab halt gehofft, dass jemand direkt weiterhelfen kann, denn groß ist der Delphi-Quellcode wirklich nicht.
Ich denke die richtige Stelle gefunden zu haben:
index := 0;
subKeyNameSize := SizeOf(subKeyName);
WHILE (RegEnumKeyEx(usersKey, index, subKeyName, subKeyNameSize, NIL, NIL, NIL, @lastWriteTime) = ERROR_SUCCESS) DO BEGIN
IF (lstrcmpi(subKeyName, '.default') <> 0) AND (Pos('Classes', STRING(subKeyName)) = 0) THEN BEGIN
subAuthorityCount := getvals(subKeyName);
IF (subAuthorityCount >= 3) THEN BEGIN
subAuthorityCount := subAuthorityCount - 2;
IF (subAuthorityCount < 2) THEN subAuthorityCount := 2;
authority.Value[5] := PByte(@authorityVal)^;
authority.Value[4] := PByte(DWORD(@authorityVal) + 1)^;
authority.Value[3] := PByte(DWORD(@authorityVal) + 2)^;
authority.Value[2] := PByte(DWORD(@authorityVal) + 3)^;
authority.Value[1] := 0;
authority.Value[0] := 0;
sid := NIL;
userNameSize := MAX_NAME_STRING;
domainNameSize := MAX_NAME_STRING;
IF AllocateAndInitializeSid(authority, subAuthorityCount, subAuthorityVal[0], subAuthorityVal[1], subAuthorityVal[2], subAuthorityVal[3], subAuthorityVal[4], subAuthorityVal[5], subAuthorityVal[6], subAuthorityVal[7], sid) THEN BEGIN
IF LookupAccountSid(Pchar(ServerName), sid, userName, userNameSize, domainName, domainNameSize, sidType) THEN BEGIN
setlength(result, length(result) + 1);
result[length(result) - 1] := STRING(domainName) + '\' + STRING(userName);
END;
END;
IF Assigned(sid) THEN FreeSid(sid);
END;
END;
subKeyNameSize := SizeOf(subKeyName);
Inc(index);
END;
Wen es interessiert und eventuell von Delphi nen Plan hat, der kann sich ja mal mit beschäftigen.
Ich komme selbst leider erst nächste Woche dazu... -.-