Entwickler-Ecke

Windows API - Umgebungsvariablen auslesen


Andi1982 - Mi 18.12.02 19:35
Titel: Umgebungsvariablen auslesen
Hallo,
ich habe ein Problem, ich will im Windows NT den Benutzernamen (Variable: USERNAME) auslesen. Aber wenn ich in meinem Porg GetEnviromentVariable('USWENAME') oder so mache sagt er immer dass er diese Funktion nicht kennt.

Was muss ich noch bei Uses einfügen dass diese Funktionen bei mir Funktionieren???

Gruß Andi


Delete - Mi 18.12.02 20:04

Er kennt sie nicht? Ich tippe eher auf falsche Syntax:

Quelltext
1:
2:
3:
4:
5:
DWORD GetEnvironmentVariable(
  LPCTSTR lpName,
  LPTSTR lpBuffer,
  DWORD nSize
);

Parameter #1 ist der Name der Umgebungsvariablen, Parameter #2 ein Puffer-Array (array[0..MAX_PATH]of char, z.B.), und der dritte Parameter ist die Größe des Puffers.
Rückgabewert ist die Anzahl der kopierten Zeichen, oder -im Fehlerfall!- Null!


Andi1982 - Do 19.12.02 07:03

Oh, da lag ich dann wirklich ein bisschen daneben mit meiner Syntax :roll:

Werd heute mittag mal deine Möglichkeit probieren!

Danke schonmal!


smiegel - Do 19.12.02 14:07

Hallo,

so müsste es auch gehen:

Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
function GetNetzName:String;
var pc  :array[0..255] of Char;
    size:DWord;
begin
  size:=SizeOf(pc);
  if (WNetGetUser('', pc, size)=NO_ERROR) then Result:=StrPas(pc)
    else Result:='weiss nicht...';
end; // GetNetzName


Delete - Do 19.12.02 17:47

Andi, wenn du Umgebungsvariablen auslesen willst, dann siehe "GetEnvironmentVariable". Den Benutzernamen kriegst du aber auch so raus: Den Namen des eingeloggten Benutzers ermitteln [http://www.auq.de/viewtopic.php?t=5106]


Andi1982 - Fr 20.12.02 07:03

Ok, also ich denke jetzt müsste ich es hinbekommen, aber wie was passiert wenn man das dann auf WIN98 ausführt? Dann dürfte er ja normalerweise zu keinem vernünftigen Ergebnis kommen.


Delete - Fr 20.12.02 09:43

Was soll denn passieren? Die Umgebungsvariable "USERNAME" habe ich unter Win98 nicht gefunden, also dürfte das Ergebnis ein Leerstring sein. Und das Auslesen des User-Namens (mit der Funktion, s. Link) funktioniert auch unter Win9x.