Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Eindeutige Identifikation Domäne (https://www.delphipraxis.net/186120-eindeutige-identifikation-domaene.html)

Bernhard Geyer 5. Aug 2015 08:53

Eindeutige Identifikation Domäne
 
Ich habe die Anforderung das eine Option/Einstellung nur dann wirken soll wenn der user in einer bestimmten Domäne eingeloggt ist.

Da ja Firma X den Domänennamen "Herbert" verwenden kann als auch Firma Y bräuchte ich die Unique ID der Domäne umd "Herbert" von Firma X von "Herbert" Firma Y unterscheiden kann.
Mit welcher WinAPI-Funktion könnte ich diese GUID bekommen?

idefix2 5. Aug 2015 09:10

AW: Eindeutige Identifikation Domäne
 
Ich würde der Anwendung da eher einen Eintrag in einem Ini-File verpassen, als im Programm eine Domäne fix zu kodieren. Ich nehme einmal an, dass die Feature nur für einen bestimmten Kunden gedacht ist. An der Domäne könnte irgendwann ein Systemadministrator etwas ändern, dann musst du dein Programm anpassen.

mikhal 5. Aug 2015 09:11

AW: Eindeutige Identifikation Domäne
 
Hilft dir das weiter?

Sherlock 5. Aug 2015 09:12

AW: Eindeutige Identifikation Domäne
 
Meinst Du sowas?
http://www.experts-exchange.com/Prog..._20731989.html

Sherlock

Bambini 5. Aug 2015 09:21

AW: Eindeutige Identifikation Domäne
 
Zitat:

Zitat von Bernhard Geyer (Beitrag 1311085)
Mit welcher WinAPI-Funktion könnte ich diese GUID bekommen?

GetAccountSid()

Sherlock 5. Aug 2015 09:24

AW: Eindeutige Identifikation Domäne
 
Merke gerade, daß man die Antwort nicht sieht, wenn man nicht von google kommt ;)
Darum

Zitat:

by:Ferruccio AccalaiPosted on 2003-09-08 at 06:35:43ID: 9309353

From http://www.thedelphimagazine.com/samples/1577/1577.htm

» Listing 1: Using LookupAccountName and LookupAccountSid.
Delphi-Quellcode:
// GetAccountName. Looks up the account name of the security
// principal specified by SID
function GetAccountName(const System: string; Sid: PSID;
  var Name: string): Boolean;
var
  DomainSize, NameSize: Longword;
  R: LongBool;
  Domain: string;
  Use: TSidNameUse;
begin
  Result := False;
  NameSize := 0;
  DomainSize := 0;
  R := LookupAccountSid(PChar(System), Sid, nil, NameSize,
    nil, DomainSize, Use);
  if (not R) and (GetLastError = ERROR_INSUFFICIENT_BUFFER)
    then begin
    SetLength(Domain, DomainSize);
    SetLength(Name, NameSize);
    Result := LookupAccountSid(PChar(System), Sid, PChar(
      Name), NameSize, PChar(Domain), DomainSize, Use);
  end else
    RaiseLastOSError;
end;
// GetAccountSid. Looks up the Sid of the specified security
// principal. Caller must free Sid using FreeMem.
function GetAccountSid(const System, AccountName: string;
  var Sid: PSID): Boolean;
var
  DomainSize, SidSize: Longword;
  R: LongBool;
  Domain: string;
  Use: TSidNameUse;
begin
  Result := False;
  SidSize := 0;
  DomainSize := 0;
  R := LookupAccountName(PChar(System), PChar(AccountName),
    nil, SidSize, nil, DomainSize, Use);
  if (not R) and (GetLastError = ERROR_INSUFFICIENT_BUFFER)
    then begin
    SetLength(Domain, DomainSize);
    Sid := AllocMem(SidSize);
    Result := LookupAccountName(PChar(System),
      PChar(AccountName), Sid, SidSize, PChar(Domain),
      DomainSize, Use);
    if not Result then begin
      FreeMem(Sid);
      Sid := nil;
    end;
  end else
    RaiseLastOSError;
end;


Bernhard Geyer 5. Aug 2015 10:39

AW: Eindeutige Identifikation Domäne
 
Zitat:

Zitat von idefix2 (Beitrag 1311086)
Ich würde der Anwendung da eher einen Eintrag in einem Ini-File verpassen, als im Programm eine Domäne fix zu kodieren. Ich nehme einmal an, dass die Feature nur für einen bestimmten Kunden gedacht ist. An der Domäne könnte irgendwann ein Systemadministrator etwas ändern, dann musst du dein Programm anpassen.

Wollte das in ein Konfiguration eintragen lassen (bzw. wäre nicht so schlimm da das in einem Plugin liegen würde).

Bernhard Geyer 5. Aug 2015 10:40

AW: Eindeutige Identifikation Domäne
 
Zitat:

Zitat von Sherlock (Beitrag 1311093)
» Listing 1: Using LookupAccountName and LookupAccountSid.[/DELPHI]

Schaut gut aus. Jetzt noch mit einem ConvertSidToStringSid verschönert und schon kann man es einfach verwenden

Luckie 5. Aug 2015 11:17

AW: Eindeutige Identifikation Domäne
 
Ist das nicht die Benutzer SSID?

Sir Rufo 5. Aug 2015 11:28

AW: Eindeutige Identifikation Domäne
 
Das sind aber lustige TriState-Funktionen :mrgreen:

Entweder liefern die ein
Delphi-Quellcode:
True
oder
Delphi-Quellcode:
False
(ACHTUNG: da wird direkt der
Delphi-Quellcode:
LongBool
-Wert in den Result geschrieben!) oder eine Exception!

Diese Routinen sollten vor dem produktiven Einsatz dringenst überarbeitet werden.


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:38 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