Buchempfehlung
Windows-Programmierung. Das Entwicklerhandbuch zur WIN32-API
Windows-Programmierung. Das Entwicklerhandbuch zur WIN32-API
"Der" Petzold, das über 1000 Seiten starke Standardwerk zum Win32-API - besonders nützlich u. a. bei der GUI-Programmierung in FreeBASIC! [Mehr Infos...]
FreeBASIC-Chat
Es sind Benutzer im FreeBASIC-Chat online.
(Stand:  )
FreeBASIC bei Twitter
Twitter FreeBASIC-Nachrichten jetzt auch über Twitter erhalten. Follow us!

Code-Beispiel

Code-Beispiele » System

Umgebungsvariablen auslesen

Lizenz:Erster Autor:Letzte Bearbeitung:
k. A.AdministratorSebastian 26.10.2007

Insbesondere auf Windowsversionen der NT-Linie (NT/2000/XP) stehen einige interessante Umgebungsvariablen zur Verfügung, die leicht ausgelesen werden können. Auf einer NT 4 Workstation könnten die z.B. so aussehen:

COMPUTERNAME=PC06
ComSpec=C:\WINNT\system32\cmd.exe
HOMEDRIVE=C:
HOMEPATH=\
LANG=de
LOGONSERVER=\\SERVER
NUMBER_OF_PROCESSORS=1
OS=Windows_NT
Os2LibPath=C:\WINNT\system32\os2\dll;
Path=C:\WINNT\system32;C:\WINNT
PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH
PROCESSOR_ARCHITECTURE=x86
PROCESSOR_IDENTIFIER=x86 Family 5 Model 4 Stepping 3, GenuineIntel
PROCESSOR_LEVEL=5
PROCESSOR_REVISION=0403
PROMPT=$P$G
SystemDrive=C:
SystemRoot=C:\WINNT
TEMP=e:\TEMP
TMP=e:\TEMP
USERDOMAIN=testdomain
USERNAME=testuser
USERPROFILE=C:\WINNT\Profiles\testuser
windir=C:\WINNT

Auf die Umgebungsvariablen kann mit der Funktion ENVIRON zugegriffen werden. Mit

PRINT ENVIRON("USERPROFILE")

könnte man beispielsweise das Profilverzeichnis des aktuell angemeldeten Benutzers auslesen. Mit der Funktion SETENVIRON können die Werte von Umgebungsvariablen geändert werden:

If SetEnviron("Path=C:") = 0 THEN
  PRINT "Umgebungsvariable gesetzt."
ELSE
  PRINT "Fehler."
END IF

Um eine Auflistung der verfügbaren Umgebungsvariablen zu erhalten, können Sie in der MS-DOS-Eingabeaufforderung SET eingeben. Beachten Sie, dass auf Windows 9x Systemen nur wenige Umgebungsvariablen zur Verfügung stehen und dass dort somit auf WinAPI-Funktionen zurückgegriffen werden muss, um bestimmte Informationen zu ermitteln.
Um die Funktion Environ() benutzen zu können, müssen aber die vorhandenen Umgebungsvariablennamen bekannt sein..[seitenwechsel]
Diese zu erhalten, ist mit dem Set-Befehl kein Problem, aber müssen die Werte auch gespeichert werden? Je nachdem, wie umfangreich der Variableninhalt ist, belegen diese Variablen ziemlich viel Speicherplatz..
Während Prompt meistens mit 4 Zeichen auskommt(i.A. $p$g, also Pfadname +'>'), nimmt die Variable 'Path' bedeutend mehr Platz in Anspruch.
Die einzelnen Werte müssen nicht wirklich gespeichert werden, da sie ja mittels Environ() jederzeit abgefragt werden können..
..wenn ihr Name bekannt ist. Das Ergebnis des Set-Befehls in ein FreeBASIC-Programm zu bekommen, ist nun keine große Schwierigkeit, es müßte halt nur in einem Array gespeichert werden. Dazu ließe sich auch ein Type verwenden..
Ein einfacherer Weg ist folgender:

Const Author="Set.Bas v0182b ¸2007 by ytwinky, MD"
Const Lf=!"\n", SetBefehl="Set"
Dim As Integer i, DNr=FreeFile
Dim As String EnvVar(), Ausgabe
Open Pipe SetBefehl For Input As #DNr
    While Not Eof(DNr)
        ReDim Preserve EnvVar(i)
        Line Input #DNr, EnvVar(i)
        EnvVar(i)=Left(EnvVar(i), InStr(EnvVar(i), "=")-1)
        i-=EnvVar(i)<>""
    Wend
Close #DNr
'Jetzt stehen die Namen im Programm zur Verfügung..
'..auch zum Ausgeben^^
Ausgabe=Author &Lf &i &" Umgebungsvariablen:"
For i=0 To UBound(EnvVar)-1
    Ausgabe+=Lf &*IIf(i<10, @" ", @"") &i &" " &EnvVar(i) &"=" &Environ(EnvVar(i))
Next
Print Ausgabe &!"\nEniki..";
Sleep
End


Zusätzliche Informationen und Funktionen
  • Das Code-Beispiel wurde am 08.06.2007 von AdministratorSebastian angelegt.
  • Die aktuellste Version wurde am 26.10.2007 von AdministratorSebastian gespeichert.
  Bearbeiten Bearbeiten  

  Versionen Versionen