AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Daten aus der Registry lesen mit TService
Thema durchsuchen
Ansicht
Themen-Optionen

Daten aus der Registry lesen mit TService

Ein Thema von fips0705 · begonnen am 28. Mär 2007 · letzter Beitrag vom 13. Apr 2007
 
Schwedenbitter

Registriert seit: 22. Mär 2003
Ort: Finsterwalde
622 Beiträge
 
Turbo Delphi für Win32
 
#14

Re: Daten aus der Registry lesen mit TService

  Alt 10. Apr 2007, 07:37
So, ich habe mir im Netz jetzt folgenden Quellcode zusammengesucht bzw. gebastelt:

Delphi-Quellcode:
Function GetSID:String;
   Function TokenToUserSidString(Token:THandle):String;
   Const
      SECURITY_NT_AUTHORITY = 5;
   Type
      PSID = ^TSID;
      TSID = Packed Record
                     Revision : Byte;
                     SubAuthorityCount : Byte;
                     IdentifierAuthority : TSIDIdentifierAuthority;
                     // [0..SubAuthorityCount - 1]
                     SubAuthority : Array [Byte] Of DWORD;
                   End;
      PTokenUser = ^TTokenUser;
      TTokenUser = Record
                      User : TSIDAndAttributes;
                     End;
   Var
      User : PTokenUser;
      Size : DWORD;
      Loop : Byte;
   Begin
      Result:='';
      Size:=4096;
      GetMem(User,Size);
      Try
         FillChar(User^,Size,0);
         If GetTokenInformation(Token,TokenUser,User,Size,Size) Then
            With PSID(User^.User.Sid)^ Do
            Begin
               Result:='S-'+IntToStr(Revision)+'-'+
                        IntToStr(IdentifierAuthority.Value[SECURITY_NT_AUTHORITY]);
               For Loop:=0 To SubAuthorityCount-1 Do
                  Result:=Result+'-'+IntToStr(SubAuthority[Loop]);
            End;
      Finally
         FreeMem(User);
      End;
   End;
Var
   Token : THandle;
Begin
   If OpenProcessToken(GetCurrentProcess,TOKEN_QUERY,Token) Then
   Begin
      Try
         Result:=TokenToUserSidString(Token);
      Finally
         CloseHandle(Token);
      End;
   End      
   Else
      Result:='Error';
End;
In meiner Anwendung funktioniert das und ich bekomme die lange Nummer. Wenn ich das in meinen Dienst einbaue, erhalte ich als Ergebnis immer S-1-5-18. Liegt vermutlich daran, dass der Dients als Benutzer System hat.

Wie kann ich das ändern?
Alex Winzer
  Mit Zitat antworten Zitat
 


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 05:04 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