AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

System SID auslesen

Ein Thema von gargano · begonnen am 29. Mär 2009 · letzter Beitrag vom 30. Mär 2009
Antwort Antwort
gargano

Registriert seit: 2. Okt 2006
76 Beiträge
 
Delphi 2007 Enterprise
 
#1

System SID auslesen

  Alt 29. Mär 2009, 19:04
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
  Mit Zitat antworten Zitat
Benutzerbild von Meflin
Meflin

Registriert seit: 21. Aug 2003
4.856 Beiträge
 
#2

Re: System SID auslesen

  Alt 29. Mär 2009, 20:03
Mit Hilfe von MSDN-Library durchsuchenLookUpAccountName sollte das möglich sein.
  Mit Zitat antworten Zitat
Benutzerbild von RWarnecke
RWarnecke

Registriert seit: 31. Dez 2004
Ort: Stuttgart
4.408 Beiträge
 
Delphi XE8 Enterprise
 
#3

Re: System SID auslesen

  Alt 29. Mär 2009, 20:37
Dieses Beispiel von den Schweizern sollte Dir weiterhelfen.
Rolf Warnecke
App4Mission
  Mit Zitat antworten Zitat
gargano

Registriert seit: 2. Okt 2006
76 Beiträge
 
Delphi 2007 Enterprise
 
#4

Re: System SID auslesen

  Alt 30. Mär 2009, 09:56
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
  Mit Zitat antworten Zitat
Dezipaitor

Registriert seit: 14. Apr 2003
Ort: Stuttgart
1.701 Beiträge
 
Delphi 7 Professional
 
#5

Re: System SID auslesen

  Alt 30. Mär 2009, 10:06
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:
SID: S-1-5-18
Name: Lokales System
Beschreibung: Dienstkonto, das vom Betriebssystem genutzt wird.
http://support.microsoft.com/kb/243330

Ein System könnte man aber per Netzwerkkarten-MAC-Adresse "identifizieren".
Christian
Windows, Tokens, Access Control List, Dateisicherheit, Desktop, Vista Elevation?
Goto: JEDI API LIB & Windows Security Code Library (JWSCL)
  Mit Zitat antworten Zitat
gargano

Registriert seit: 2. Okt 2006
76 Beiträge
 
Delphi 2007 Enterprise
 
#6

Re: System SID auslesen

  Alt 30. Mär 2009, 14:37
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.dllname '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.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:24 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz