![]() |
System SID auslesen
Hi,
wie kann ich die System-SID auslesen ? Bei der Installation des Betriebssystems wird offentsichlich ein SID des Systems (des PC's) erstellt. Wie kann ich den auslesen ? Viele Grüße Werner |
Re: System SID auslesen
Mit Hilfe von
![]() |
Re: System SID auslesen
Dieses
![]() |
Re: System SID auslesen
Vielen Dank für die Antwort, aber das sind alles SID für den User Account.
Was ich benötige ist der SID für das SYSTEM. Das Tool PSGetSid macht sowas und soweit ich weiß ist die System SID in der Registry versteckt. Und brauche das ganze aber in Delphi. Viele Grüße Gargano |
Re: System SID auslesen
Das System wird normal nicht über die SID identifiziert. Jeder Benutzer kann sich in einer Domäne einloggen und die RID (letzte Zahl) unterscheidet sich dann nur bei den Benutzern - der Rest ist die ID der Domäne.
Für lokale Benutzer gilt dasselbe. D.h. der Teil ohne "-RID" ist die "System-SID": S-1-5-xxxx-yyyy-zzzz-RID Aber vielleicht meinst du? Zitat:
![]() Ein System könnte man aber per Netzwerkkarten-MAC-Adresse "identifizieren". |
Re: System SID auslesen
Hallo,
vielen Dank für die Antwort, es war von jedem etwas dabei. Die Lösung habe ich gefunden, wenn man eine Accountabfrage mit nil als Server und mit dem PC Namen als User durchführt, bekommt man den SID für das System. (Mac Id habe ich bei einem andern Projekt hergenommen. das hat aber bei Notebooks zu Problemen geführt, da diese schon mal den Kabel-Lan auf Wireless-lan umstellen und damit ist die MAC adresse eine andere) Hier der Code, falls ihn jemand mal braucht :
Delphi-Quellcode:
unit GetSystemSIDUnit;
interface uses Windows, SysUtils; function GetSystemSID: string; function ConvertSidToStringSid(SID: PSID; var StringSid: LPSTR): Boolean; stdcall; external 'advapi32.dll' name 'ConvertSidToStringSidA'; implementation function GetAccountSid(const Server, User: WideString; var Sid: PSID): DWORD; var dwDomainSize, dwSidSize: DWord; R : LongBool; wDomain : WideString; Use : DWord; begin Result := 0; SetLastError(0); dwSidSize := 0; dwDomainSize := 0; R := LookupAccountNameW(PWideChar(Server), PWideChar(User), nil, dwSidSize, nil, dwDomainSize, Use); if (not R) and (GetLastError = ERROR_INSUFFICIENT_BUFFER) then begin SetLength(wDomain, dwDomainSize); Sid := GetMemory(dwSidSize); R := LookupAccountNameW(PWideChar(Server), PWideChar(User), Sid, dwSidSize, PWideChar(wDomain), dwDomainSize, Use); if not R then begin FreeMemory(Sid); Sid := nil; end; end else Result := GetLastError; end; function GetSystemSID: string; var SID : PSID; strSID : PChar; CName : Array [0..255] of Char; nSize : Cardinal begin Result:=''; GetComputerName (CName,nSize); if GetAccountSid('',CName, SID)=0 then begin ConvertSidToStringSid(SID, strSID); Result:=strSid; end; end; end. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:59 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