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 Momentanen Benutzernamen herausfinden (https://www.delphipraxis.net/102954-momentanen-benutzernamen-herausfinden.html)

N30N 7. Nov 2007 14:38


Momentanen Benutzernamen herausfinden
 
Hi,

Wie kann ich unter Delphi den aktuellen Windows Anmeldenamen herausfinden? Die Rechner befinden sich übrigens in einer Domäne!


Danke schonmal :)

lbccaleb 7. Nov 2007 14:39

Re: Momentanen Benutzernamen herausfinden
 
schau mal in der code lib nach, da wirst du fündig...

Klaus01 7. Nov 2007 14:42

Re: Momentanen Benutzernamen herausfinden
 
..oder diesen Thread.

Grüße
Klaus

N30N 7. Nov 2007 14:53

Re: Momentanen Benutzernamen herausfinden
 
Ich hab mir aus der Library folgenden Code rausgesucht:


Delphi-Quellcode:
function GetLoggedOnUserNameEx(fFormat: DWORD; var Username: String): DWORD;
var
  Size: DWORD;
  Buffer: array [0..1024] of Char;
begin
  Result := 0;
  Size := sizeof(Buffer);
  if GetUserNameEx(fFormat, Buffer, Size) then
    SetString(Username, Buffer, Size-1)
  else
    Result := GetLastError;
end;

procedure TForm1.Button1Click(Sender: TObject);
const
   NameFormats : Array[0..9] of DWORD = (
      NameUnknown,
      NameFullyQualifiedDN,
      NameSamCompatible,
      NameDisplay,
      NameUniqueId,
      NameCanonical,
      NameUserPrincipal,
      NameCanonicalEx,
      NameServicePrincipal,
      DNSDomainName);

var
  Username: String;
  err: DWORD;
  i : shortint;
  sMessage : string;
begin
   for i := 0 to high(NameFormats) do
   begin
      err := GetLoggedOnUserNameEx(NameFormats[i], Username);
      if err = 0 then
         sMessage := sMessage+format('%d: %s', [NameFormats[i], Username])+#13
      else
         sMessage := sMessage+format('%d: %s', [NameFormats[i], SysErrorMessage(err)])+#13;
   end;
   ShowMessage(sMessage)
end;

Ich hab also ein neues Formular erstellt, einen Button1 hinzugefügt und einfach mal starten lassen.Wenn ich allerdings jetzt auf den Button1 klicke, passiert nichts. Normalerweise müsste doch jetzt eine Messagebox mit dem Benutzernamen erscheinen oder nicht?

An Komponenten kann mir ja eigentlich nix fehlen, hab ja keine Fehlermeldungen bekommen.

DeddyH 7. Nov 2007 14:54

Re: Momentanen Benutzernamen herausfinden
 
ButtonClick ist zugewiesen?

N30N 7. Nov 2007 14:56

Re: Momentanen Benutzernamen herausfinden
 
Hab nen dummen Fehler gemacht. Hab das abschliessende End. leider vor den ganzen Code gesetzt bei Copy & Paste :D


Jetzt bekomme ich wieder massig Fehlermeldungen

Zitat:

[Fehler] Unit1.pas(35): Undefinierter Bezeichner: 'GetUserNameEx'
[Fehler] Unit1.pas(44): Undefinierter Bezeichner: 'NameUnknown'
[Fehler] Unit1.pas(45): Undefinierter Bezeichner: 'NameFullyQualifiedDN'
[Fehler] Unit1.pas(46): Undefinierter Bezeichner: 'NameSamCompatible'
[Fehler] Unit1.pas(47): Undefinierter Bezeichner: 'NameDisplay'
[Fehler] Unit1.pas(48): Undefinierter Bezeichner: 'NameUniqueId'
[Fehler] Unit1.pas(49): Undefinierter Bezeichner: 'NameCanonical'
[Fehler] Unit1.pas(50): Undefinierter Bezeichner: 'NameUserPrincipal'
[Fehler] Unit1.pas(51): Undefinierter Bezeichner: 'NameCanonicalEx'
[Fehler] Unit1.pas(52): Undefinierter Bezeichner: 'NameServicePrincipal'
[Fehler] Unit1.pas(53): Undefinierter Bezeichner: 'DNSDomainName'
[Fataler Fehler] Project1.dpr(5): Verwendete Unit 'Unit1.pas' kann nicht compiliert werden

DeddyH 7. Nov 2007 15:05

Re: Momentanen Benutzernamen herausfinden
 
Du hast anscheinend nicht alles kopiert.
Delphi-Quellcode:
function GetUserNameEx(NameFormat: DWORD;
  lpNameBuffer: LPSTR; var nSize: DWORD):Boolean; stdcall;
  external 'secur32.dll' Name 'GetUserNameExA';

N30N 8. Nov 2007 10:37

Re: Momentanen Benutzernamen herausfinden
 
Zitat:

Zitat von DeddyH
Du hast anscheinend nicht alles kopiert.
Delphi-Quellcode:
function GetUserNameEx(NameFormat: DWORD;
  lpNameBuffer: LPSTR; var nSize: DWORD):Boolean; stdcall;
  external 'secur32.dll' Name 'GetUserNameExA';


Also Copy und Paste war vollständig, diese Funktion von dir entdecke ich nicht.

Hier ist der Link zum Library Eintrag.

DeddyH 8. Nov 2007 10:44

Re: Momentanen Benutzernamen herausfinden
 
In dem von Dir verlinkten Beitrag ist wiederum der Originalthread verlinkt, da steht alles drin, was evtl. noch fehlt ;)


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