Entwickler-Ecke

Windows API - Windows-Benutzername ermitteln


FrEaKY - Mo 25.10.04 01:34
Titel: Windows-Benutzername ermitteln
Tag,

wie kann ich abfragen mit welchen benutzernamen man in windows eingeloggt ist? Also ein bestimmtes Prog im autostart soll nur starten wenn zB ich eingeloggt bin.

MfG Freaky

Moderiert von user profile iconTino: Titel geändert.
Moderiert von user profile iconTino: Topic aus VCL (Visual Component Library) verschoben am Mi 27.10.2004 um 09:27


Delete - Mo 25.10.04 02:51

Dann pack es doch sauch nur in deinen Autostart. Dafür gibt es ja die Benutzerprofile unter Windows NT ff. Ansonsten ist Suche im MSDN GETUSERNAME ( http://msdn.microsoft.com/library/default.asp?url=/library/en-us/sysinfo/base/getusername.asp )dein Freund.


Harry M. - Mo 25.10.04 03:04

zur weiteren verarbeitung...




Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
function CurrentUserName: String;
var
  u: array[0..127of Char;
  sz: DWord;
begin
  sz:=SizeOf(u);
  GetUserName(u,sz);
  Result:=u;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
   ShowMessage(CurrentUsername);
end;


Moderiert von user profile iconChristian S.: Delphi-Tags hinzugefügt.


Delete - Mo 25.10.04 05:29

Delphi-Tags wären wünschenswert. ;)

Ich habe gerade nochmeine version rausgesucht, die ich immer verwende:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
////////////////////////////////////////////////////////////////////////////////
// Procedure : UserName
// Comment   : Returns the name of the currently loggon user

function GetCurrUserName: String;
var
  Size: DWORD;
begin
  Size := MAX_COMPUTERNAME_LENGTH + 1;
  SetLength(Result, Size);
  if GetUserName(PChar(Result), Size) then
    SetLength(Result, Size)
  else
    Result := '';
end;

Du prüfst nicht, ob GetUserName erfolgreich war, scheitert der Aufruf steht bei dir Schrott in u. Man hat keine Möglichkeit zu überprüfen, ob deine Funktion erfolgreich war, bei mir brauucht man nur zu gucken, ob der zurückgegeben String eine Länge größer null hat. Ein weiteres Manko bei dir: Sollte der Benutzername weniger als 128 Zeichen haben hast du in den übrigen Zeichen immer noch den Speichermüll drinne der an der Stelle von u steht. Da du vor dem Aufruf von GetUserName das Array nicht initialisierst. Bei mir wird der String auf die tatsächlich gelesenen Zeichen gekürzt.


FrEaKY - Mo 25.10.04 12:49

Danke schön!