Autor Beitrag
FrEaKY
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 235


D7
BeitragVerfasst: Mo 25.10.04 01:34 
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
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: 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 ( msdn.microsoft.com/l...base/getusername.asp )dein Freund.
Harry M.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 754

Win 2000, XP
D2005
BeitragVerfasst: Mo 25.10.04 03:04 
zur weiteren verarbeitung...



ausblenden 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.
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mo 25.10.04 05:29 
Delphi-Tags wären wünschenswert. ;)

Ich habe gerade nochmeine version rausgesucht, die ich immer verwende:
ausblenden 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 235


D7
BeitragVerfasst: Mo 25.10.04 12:49 
Danke schön!