AGB  ·  Datenschutz  ·  Impressum  







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

GetUsernameEx

Ein Thema von kuba · begonnen am 11. Aug 2014 · letzter Beitrag vom 26. Nov 2014
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von kuba
kuba

Registriert seit: 26. Mai 2006
Ort: Arnsberg
588 Beiträge
 
Delphi 11 Alexandria
 
#1

AW: GetUsernameEx

  Alt 11. Aug 2014, 21:48
Vermutlich wird man irgendwie rausfinden müssen welcher "Desktop" aktuell auf dem Monitor angezeigt wird und liest dann von Diesem den Account aus.
Super Idee, so "ähnlich" habe ich es jetzt für meine Zwecke gelöst. Wenn der richtige Benutzer angemeldet ist läuft eine bestimmte Anwendung im Hintergrund, das reicht mir vollkommen

Vielen Dank für die Anregungen.

KUBA
Stefan Kubatzki
E=mc2
  Mit Zitat antworten Zitat
Benutzerbild von Kurt56
Kurt56

Registriert seit: 6. Apr 2005
Ort: Wedemark
47 Beiträge
 
Delphi XE8 Professional
 
#2

AW: GetUsernameEx

  Alt 25. Nov 2014, 14:06
Ich habe das Problem, den Usernamen zu finden, so gelöst:

Delphi-Quellcode:
procedure TMainForm.FormCreate(Sender: TObject);
var
    lpbuff : pchar;
    nSize : dword;
begin

lpbuff:=PChar(AllocMem(30));
getusername(lpbuff, nsize);
//showmessage(lpbuff);
getusername(lpbuff, nsize);
//showmessage(lpbuff);
end;
Leider erhalte ich bei dem ersten Aufruf von "getusername" nur einen leeren String.
Doch mit dem gleich darauf folgenden Aufruf erhalte ich den Usernamen, der sich aktuell angemeldet hat.

Warum der 1. Aufruf noch nicht zum Ziel führt, habe ich nie untersucht, Hauptsache ich komme so an den Usernamen.

Kurt
Kurt
Für die kleinen Fehler haben wir Computer,
die großen Fehler machen wir selber.
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.221 Beiträge
 
Delphi 10.4 Sydney
 
#3

AW: GetUsernameEx

  Alt 25. Nov 2014, 14:09
Leider erhalte ich bei dem ersten Aufruf von "getusername" nur einen leeren String.
Doch mit dem gleich darauf folgenden Aufruf erhalte ich den Usernamen, der sich aktuell angemeldet hat.

Warum der 1. Aufruf noch nicht zum Ziel führt, habe ich nie untersucht, Hauptsache ich komme so an den Usernamen.
Da brauchst du nix untersuchen, einfach die Funktionsbeschreibung durchlesen.
Der zweite Parameter ist ein In/Out-parameter. Rein gibtst du die Buffergröße, raus bekommst du die nötige Buffergröße.
Also beim ersten Aufruf geht du mit größe 0 rein, raus kommt die nötige größe und beim zweiten aufruf hast du diese als in-Wert.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.629 Beiträge
 
Delphi 12 Athens
 
#4

AW: GetUsernameEx

  Alt 25. Nov 2014, 14:15
Also beim ersten Aufruf geht du mit größe 0 rein
Das ist aber bei einer lokalen Variable eher Zufall. Steht auf dem Stack an der Position von nWord irgendein gültiger Wert, kann das auch mal zu einem Bufferoverflow führen.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
hathor
(Gast)

n/a Beiträge
 
#5

AW: GetUsernameEx

  Alt 25. Nov 2014, 14:48
Delphi-Quellcode:
function GetUser: String;
const
   MAX_USERNAME_LENGTH = 256;
var
    Buffer: Array[0..MAX_USERNAME_LENGTH] of WIDEChar;
    Size: DWord;
begin
    Size := Pred(SizeOf(Buffer));
    Winapi.Windows.GetUserName(Buffer, Size);
    Result := StrPas(Buffer);
end;

Geändert von hathor (25. Nov 2014 um 15:42 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.629 Beiträge
 
Delphi 12 Athens
 
#6

AW: GetUsernameEx

  Alt 25. Nov 2014, 15:09
Wozu Platz verschwenden: MAX_COMPUTERNAME_LENGTH = 15 !
Wobei es hier ja nicht um den Computernamen sondern um den Usernamen geht - der kann bis zu 256 Zeichen lang sein!
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
hathor
(Gast)

n/a Beiträge
 
#7

AW: GetUsernameEx

  Alt 25. Nov 2014, 15:40
@Uwe Raabe:
Du hast recht.
Ich habe mich bei den Constanten vergriffen...
Was mein DELPHI nicht kennt, muss ich dann eben selbst definieren:

const
MAX_USERNAME_LENGTH = 256;

Geändert von hathor (25. Nov 2014 um 16:24 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.221 Beiträge
 
Delphi 10.4 Sydney
 
#8

AW: GetUsernameEx

  Alt 25. Nov 2014, 15:25
Das ist aber bei einer lokalen Variable eher Zufall.
Wobei wir schon fast wieder hier wären: http://www.delphipraxis.net/182840-w...reeandnil.html
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.656 Beiträge
 
Delphi 12 Athens
 
#9

AW: GetUsernameEx

  Alt 25. Nov 2014, 15:38
Ich mach da einfach 2 Aufrufe wie von Bernhard schon angedeutet, siehe hier: http://forum.delphi-treff.de/index.p...tzer-auslesen/
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von Kurt56
Kurt56

Registriert seit: 6. Apr 2005
Ort: Wedemark
47 Beiträge
 
Delphi XE8 Professional
 
#10

AW: GetUsernameEx

  Alt 26. Nov 2014, 09:13
Da brauchst du nix untersuchen, einfach die Funktionsbeschreibung durchlesen.
Der zweite Parameter ist ein In/Out-parameter. Rein gibtst du die Buffergröße, raus bekommst du die nötige Buffergröße.
Also beim ersten Aufruf geht du mit größe 0 rein, raus kommt die nötige größe und beim zweiten aufruf hast du diese als in-Wert.
Oh, Asche auf mein Haupt. Vielen Dank für den Hinweis.


Als USERNAME habe ich bisher erlebt, dass der Nachname 12 Stellen hatte. Da mehrere Personen der Familie einen Account hatten, kam noch der Vorname dazu.
10 Stellen sind da nicht gut ausreichend.
Kurt
Für die kleinen Fehler haben wir Computer,
die großen Fehler machen wir selber.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 21:27 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