Umgebungs-Variable auf Windows

Daten zum Umfeld

Umgebungs-Variable sind Daten zum Arbeits-Umfeld (Hardware, Software) von Betriebssystem und Programmen. Sie sind einfach und transparent organisiert , jedoch durch strenge Zugriffsrechte gut geschützt.
Diese Variablen sind für alle Programmiersprachen und für viele andere Programme eine wichtige Informations-Quelle.
Der weltgrößte Software-Hersteller favorisiert das 'Konkurrenz-Modell' Registry-Datenbank. Diese Datei ist versteckt, die Daten sind codiert und nur mit speziellen Programmen zugänglich.
Windows Familie der weltweit meist verwendeten PC-Betriebs-Systeme
Umgebungs-Variable Umfeld-Daten für alle Programme
Konsole Umgebungs-Variable und Befehl SET
Systemsteuerung System-Variable und Benutzer-Variable
Registry Umgebungs-Variable in der Registry-Datenbank
Liste Typische Windows Umgebungs-Variable
PATH Pfade zu ausführbaren Programmen
PATHEXT Datei-Erweiterungen von ausführbaren Programmen
Router / Proxy Zugang zum Internet: HTTP_PROXY, HTTPS_PROXY, FTP_PROXY, NO_PROXY, ...
Empfehlungen CLASSPATH, LOCALE, TZ, ...
Verwandte Themen:
Umgebungs-Variable auf Linux, mit C/C++, Perl, PHP, Datei-Erweiterung & Datei-Type

Umgebungs-Variable = Systemvariable + Benutzervariable

Jedes Betriebssystem führt einen Satz von Daten allgemeiner Bedeutung. Diese Daten stehen für alle Programme und Programmiersprachen zur Verfügung und ermöglichen die Live-Anpassung an die jeweilige Hardware und an die speziellen Einstellungen des Betriebssystems. Der Zugang zu den Umgebungs-Daten ist leider je nach Betriebssystem unterschiedlich. Auf Windows-Systemen gibt es mehrere Möglichkeiten, diese Daten zu lesen und zu ändern.
Windows führt unterschiedliche Gruppen von Umgebungs-Daten:
Die 'Systemvariablen' enthalten Daten für alle User.
Unabhängig davon werden für jeden User eigene 'Benutzervariablen' geführt.
Bei Anmeldung (Login) werden die Systemvariablen und die jeweiligen Benutzervariablen zu den 'aktuellen' Umgebungs-Variablen zusammmengeführt.
Alle Umgebungs-Daten werden (nur auf Windows) in der gut versteckten Registry-Datenbank geführt.
Windows-Systeme bierten mehrere Möglichkeiten für den Zugang zu den Daten.
Konsole - Die veraltete (DOS)-Konsole cmd.exe
Systemsteuerung - Fenster-Oberfläche zur Konfiguration des Betriebssystems sysdm.cpl
Registry Editor - Das Programm regedit.exe
Einzelne Programme erhalten beim Start je eine private Kopie der Umgebungs-Variablen, die sie zur Orientierung und Anpassung verwenden können. Wenn ein Programm (z.B. ein Webserver) ein anderes startet, dann 'vererbt' es nicht nur seine eigenen Variablen, sondern ergänzt sie um einige zusätzliche Variable, z.B. zur Konfiguration des Webservers.
Zugang zu den Umgebungs-Daten in Programmiersprachen:
Perl, PHP,
Umgebungs-Daten in Linux

Konsole und Umgebungs-Variable

Die Windows-Konsole cmd.exe bietet mit dem Befehl set die Möglichkeit, die aktuellen Umgebungs-Daten (Systemvariable + Benutzervariable) zu lesen und zu ändern.
Jedes Konsolen-Fenster erhält ('erbt') beim Öffnen einen kompletten eigenen Satz der Umgebungs-Daten. Änderungen wirken sich daher nur in der jeweiligen Session aus, d.h. nur im geöffneten Konsolen-Fenster.
Jedes Konsolen-Fenster erbt nur jene Daten, die zum Zeitpunkt der Anmeldung gültig waren. Eine Änderung der Umgebungs-Daten in der Registry wird erst nach Abmeldung und erneuter Anmeldung berücksichtigt.

Vorteil: Diese Methode ist ideal zum experimentieren: Allfällige Fehler sind nach dem Schließen des Konsolen-Fensters vergessen.
Testen sie jede Änderung der Umgebungs-Variablen mit der Konsole, bevor sie andere Methoden zur dauerhaften Eintragung (→ Systemsteuerung, → Registry) anwenden !

Nachteil: So ist keine dauerhafte Einstellung der Umgebungs-Variablen möglich.

Ausgabe

Starten sie eine Konsole cmd.exe (Eingabeaufforderung).

Befehl set ohne Argumente gibt die Liste aller definierten Umgebungs-Variablen aus.
Befehl set mit einem Buchstaben gibt alle Variable aus, die mit diesem Zeichen beginnen.
Befehl set mit einem Variablen-Namen gibt nur diese Variable aus.
C:\> set
ALLUSERSPROFILE=C:\Dokument und Einstellungen\All Users
. . .
windir=C:\WINDOWS
C:\> set s
SESSIONNAME=Console
. . .
SystemRoot=C:\WINDOWS
C:\> set systemdrive
SystemDrive=C:
Ausgabe-Filter
Der Ausgabe-Text lässt sich weiter bearbeiten, z.B. filtern. Dazu eignen sich u.a. Programme wie more, sort oder findstr
Beispiel:
C:\> set | findstr /i proxy
zeigt alle Umgebungs-Variablen zum Thema → Router / Proxy an, z.B. HTTP_PROXY ... NO_PROXY

Eingabe

So wird eine Variable erzeugt bzw. überschrieben. Nach dem Befehl set folgt der Name der Variablen und ein = Zeichen.
Alle ! nachfolgenden Zeichen gelangen in den Wert der Variablen, daher darf nach dem = kein Leerzeichen folgen.

C:\> set HTTP_PROXY=192.168.0.1:1234

Details zur Syntax von Konsolen-Variablen.

Ergänzung

So wird der Wert (Text) einer vorhandenen Variablen verwendet: Der Variablen-Name wird in %% eingeschlossen. Das Beispiel fügt an die vorhandene Variable PATH ein ; Trennzeichen und einen neuen Pfad an.

C:\> set PATH=%PATH%;c:\programme\myprox

Details zur Syntax von Konsolen-Variablen.

Export

Der Befehl SET bietet die Möglichkeit, alle oder nur bestimmte Umgebungs-Variablen in eine Text-Datei zu schreiben:
C:\> set >> C:\env.txt
C:\> set P >> C:\env.txt
C:\> set PATH >> C:\env.txt
Die erzeugte Text-Datei env.txt kann man mit jedem geeigneten Programm lesen und anzeigen (z.B. mit notepad.exe )

Diesen Befehl kann man in eine Konsolen-Script-Datei eintragen, z.B. in
C:\Programme\myprox\export_env.cmd
Die Datei gilt als 'ausführbares Programm' und kann mit diesem Konsolen-Befehl gestartet werden.
C:\> export_env
Lesen sie das Kapitel PATH auf dieser Seite zur Einrichtung eines Verzeichnisses für eigene Programme.
Export und nachfolgendes Einlesen der Umgebungs-Variablen stellt eine der umständlichen Möglichkeiten dar, auch mit der Programmiersprache → VBA an die Umgebungs-Daten zu kommen.

Cygwin, Perl, PHP, ...

Als Ergänzung der altersschwachen Windows-Konsole kann man andere Konsolen-Programme eingeseten, z.B. die ausgezeichnete Linux-Shell-Emulation → Cygwin oder eigene Programme in → Perl oder → PHP (Stichwort CLI für 'CommandLine Interpreter').

Alle diese Programme bieten wesentlich mehr Möglichkeiten. Sie können nicht nur Umgebungs-Variable lesen bzw. ändern, sondern bieten u.a. auch Zugriff auf die Registry-Datenbank.
Die neuesten Windows-Systeme sind bereits mit der PowerShell ausgestattet. Man wird sehen, ob sich dieses Konsolen-Programm in der Praxis bewährt und durchsetzt.

Systemsteuerung und Umgebungs-Variable

Alle Umgebungs-Variablen sind wesentlich bequemer in der Systemsteuerung zugänglich, allerdings ist der Befehl tief versteckt: Das Programm selbst ist mit gewohnter Heimlich-Tuerei ebenfalls versteckt:
C:\Windows\System32\sysdm.cpl
Es wird z.B. von rundll32.exe ausgeführt und verwendet allgemeine Bibliotheken wie kernel.dll, ntdll.dll, user32.dll usw. )

Die Systemsteuerung hat direkten Zugriff auf die interne ↓ Registry-Datenbank, in welcher die Umgebungs-Daten gespeichert sind.
Änderungen von Umgebungs-Daten in der Systemsteuerung sind permanent !
Sie werden unaufgefordert ! in der Registry-Datenbank gespeichert und sind spätestens bei der nächsten Anmeldung wirksam.
Daher sollte jede Änderung dieser Daten nur nach sorgfältiger Überlegung und möglichst nach Test auf der ↑ Konsole erfolgen.
Achtung - Änderungen der Registry-Daten können Betriebssystem, Programme und Daten irreversivel beschädigen !
Das angezeigte Fenster zur Änderung der Umgebungs-Variablen enthält 2 getrennte Bereiche:
Oben die Benutzervariablen für die/den angemeldete/n User, darunter die Systemvariablen (für alle User gleich).

Für jeden User ist eine eigene Liste von Variablen angelegt. Diese wird bei der Anmeldung mit den Systemvariablen kombiniert und ergibt die tatsächlich verfügbaren Umgebungs-Daten.
Die winzigen Datenfelder sind zur Bearbeitung ungeeignet.
Es ist besser, die Daten aus dem Feld in das Textfenster eines Editors zu kopieren, und dort anzusehen.
Im Editor können die Daten bequem geändert werden. Anschließend kopiert man sie zurück in das Datenfeld der Systemsteuerung.
Achten sie bei den häufig geänderten Variablen PATH, PATHEXT auf das ; Trennzeichen (Linux verwendet : Trennzeichen). Diese Listen werden in der angegebenen Reihenfolge durchsucht. Änderungen treten evtl. erst nach Abmeldung und erneuter Anmeldung in Kraft.

Registry und Umgebungs-Variable

Nur Windows-Betriebssysteme verwenden eine Registrierungs-Datenbank in dieser Form.
Die Organisation entspricht einem Hierarchischen Baum. Die Schlüssel (keys) sind 'Behälter' ähnlich wie die Verzeichnisse des Dateisystems. Jeder Schlüssel kann Variable (Daten) und beliebig viele weitere Schlüssel enthalten. Die Variablen sind darin enthalten ähnlich wie die Dateien des Dateisystems.
Jedes Win-System enthält den Registry-Editor regedit.exe als Standard-Werkzeug für die Registry.
Die Registry besteht aus mehreren Dateien, alle mit den Attributen Hidden und System. Die Daten sind binär codiert und nur mit speziellen Programmen zugänglich.
Änderungen von Registry-Daten sind permanent !
Sie werden unaufgefordert ! in der Registry-Datenbank gespeichert und sind spätestens bei der nächsten Anmeldung wirksam.
Daher sollte jede Änderung von Registry-Daten nur nach sorgfältiger Überlegung und möglichst nach Test auf der Konsole erfolgen.
Achtung - Änderungen von Registry-Daten können Betriebssystem, Programme und Daten irreversivel beschädigen !

Sicherung durch Export

Der Registry-Editor bietet die Möglichkeit, einzelne Daten oder ganze Gruppen in Text-Dateien *.reg zu exportieren.
Nutzen sie unbedingt diese Möglichkeit, um den aktuellen Zustand von Daten vor einer Änderung zu speichern.
Wenn die Änderung nicht erfolgreich war, kann sie durch Laden der entsprechenden *.reg Datei wieder behoben werden - Allerdings nur dann, wenn das Betrisbssystem überhaupt noch hochfährt, und wenn keine Folge-Schäden eingetreten sind.
In diesen Registry-Schlüsseln (ähnlich wie Verzeichnisse) befindet sich je ein Satz von Umgebungs-Variablen für System ( Set001 ) und jeden einzelnen User
HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Session Manager\Environment
HKEY_LOCAL_MACHINE\SYSTEM\ControlSet002\Control\Session Manager\Environment
HKEY_LOCAL_MACHINE\SYSTEM\ControlSet003\Control\Session Manager\Environment
. . .
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment
Der CurrentControlSet wird bei jeder Anmeldung (Login) aus den Sets von System und User neu zusammengestellt. Änderungen an diesem Satz sind daher wirkungslos.
In den angeführten Schlüsseln sind die einzelnen Daten enthalten. Umgebungs-Daten sind ausschließlich vom Typ Text (String, Zeichenfolge) und erscheinen als Type=REG_SZ oder REG_EXPAND_SZ Mit Rechtsklick können sie neue Variable erzeugen, mit Doppelklick den Wert vorhandener Variabler ändern bzw. eine Variable oder einen Schlüssel (inkl. der enthaltenen Variablen) löschen.

Export

Markieren sie den gewünschten Schlüssel im Registry Editor und erteilen sie den Menü-Befehl   Datei | Exportieren
Die erzeugte Datei *.reg enthält ausschließlich Text und kann mit jedem Editor geöffnet und geändert werden.
Exportierte Dateien beginnen mit einer 2-Byte Markierung FF FE

Import

Jede Text-Datei *.reg, die nach den gleichen einfachen Regeln wie ein Registry Export erstellt ist, kann auch importiert werden. Dabei werden bestehende Daten ersetzt (überschrieben).
Der Import erfolgt entweder durch Doppelklick auf eine Datei *.reg oder durch den Befehl   Datei | Importieren im Registry Editor.
Die 2-Byte Markierung wird für den Import nicht benötigt, dieser funktioniert auch mit ganz normalen Text-Dateien.
Muster einer Text-Datei demo.reg zur Erzeugung / Änderung einer Umgebungs-Variablen
[HKEY_LOCAL_MACHINE\SYSTEM\ControlSet099\Control\Session Manager\Environment]
"HTTP_PROXY"="192.168.0.2:1234"
"TZ"="Europe/Vienna"
Der Name des Schlüssels ist in [] angegeben, danach folgen alle Daten in der Form "Name"="Wert" (hier für die beiden Umgebungs-Variablen HTTP_PROXY und TZ, die allerdings für User Nr.99 angelegt werden. Wenn sie solche Tests ausführen, sollten sie bestehende Daten keinesfalls überschreiben, und für den Test erzeugte Daten umgehend wieder löschen.

Programmiersprachen

Alle moderenen Programmiersprachen bieten die Möglichkeit, auf die Registry zuzugreifen.
Diese Methoden sind jedoch nur bei Win-Systemen anwendbar und daher in eigene Module ausgelagert.
Die Namen der 5 Schlüssel der höchsten Registry-Ebene werden dabei oft abgekürzt (z.B. HKLM für HKEY_LOCAL_MACHINE )
Professionelle Programme arbeiten (möglichst) unabhängig von System und Version. Daher sollte ein Registry-Zugriff nur dann erfolgen, wenn es keine allgemeine Möglichkeit gibt.
Eine Ausnahme sind spezialisierte Programme für Aufgaben eines bestimmten PC: Sie sind z.B. mit → Perl leicht programmierbar.

Zugriff mit Webseiten

Programme zur Erzeugung dynamischer Webseiten (→ Perl, → PHP, ...) arbeiten am Webserver, nicht am eigenen PC.
Nur wenn ein Webserver am eigenen PC läuft (sehr empfehlenswert), ist ein Zugriff auf die eigene Registry möglich. Mit dieser Methode ist es möglich, die eigene Registry mit komfortablen Webseiten zu verwalten.
Für Webseiten eines entfernten Webservers ist der Zugriff auf Daten des Client-PC aus guten Gründen verboten. Leider kann man dieses Verbot z.B. mit → ActiveX-Komponenten umgehen. Davon wird aus Sicherheits-Gründen unbedingt abgeraten.

Programm REG

Das Konsolen-Programm reg.exe erlaubt den Zugriff auf die Registry-Datenbank. Die manuelle Bedienung ist umständlich, aber zur Automatisierung in *.cmd Scripts ist reg gut geeignet.
Anzeige der integrierten Hilfe:
C:\> reg /?

Beispiel: Script show_env.cmd zur Ausgabe der Umgebungs-Variablen:
@echo off
set rk="HKLM\SYSTEM\CurrentControlSet\Control
set rk=%rk%\Session Manager\Environment"
reg query %rk%
Anwendung:
C:\> show_env

Cygwin

Das Projekt Cygwin portiert die Linux-Konsole bash und die meisten der leistungsfähigen Linux Shell-Dienstprogramme auf Windows.

Man kann die Windows-Konsole damit ausgezeichnet ergänzen und u.a. auch auf die Registry-Datenbank zugreifen. Cygwin ist kostenfrei im Internet erhältlich.

Umgebungs-Variable (Windows-Auswahl)

Microsoft: Windows XP Command Shell Overview Wikipedia Wikipedia: Umgebungs-Variable (en)

PATH

In der Praxis wird diese Umgebungs-Variable am häufigsten geändert.
Testen sie jede Änderung zuerst auf der ↑ Konsole. Nach Änderung muss sich das betreffende Programm ohne Angabe des Pfades starten lassen.
Wenn dieser Test erfolgreich war, führen sie die gleiche Änderung mit ↑ Systemsteuerung oder ↑ Registry-Editor durch.
Test an der Konsole:
C:\> set path=%path%;c:\neuer_pfad

PATH

enthält eine Liste von Verzeichnis-Pfaden. Die einzelnen Pfade sind durch ; Zeichen getrennt. (Achtung: Linux verwendet : Trennzeichen). Die PATH-Liste wird auf der Suche nach 'ausführbaren Programmen' durchlaufen, deren Pfad nicht angegeben wurde.
Pfad-Angaben sind (nur !) auf Windows nicht an große oder kleine Buchstaben gebunden, d.h. die Angabe von C:\Programme ist identisch mit c:\programme

Beispiel Rechner:
Wenn sie auf der Konsole den Befehl calc.exe eingeben, dann wird die Liste der Pfade in der Variablen PATH auf der Suche nach dem Programm calc.exe durchlaufen. Dabei wird die Reihenfolge eingehalten, d.h. die Suche wird abgebrochen, wenn calc.exe in einem der Pfade gefunden wird. Bei Erfolg wird das Programm - Rechner - ausgeführt.

Beispiel Perl:
Normalerweise befindet sich das Perl Interpreter-Programm nach Installation hier:
C:\Programme\Perl\bin\perl.exe
Ohne Änderung der Variablen PATH müssen sie Perl so umständlich starten:
C:\> c:\programme\perl\bin\perl exe -v
Wenn der Pfad zum Perl-Interpreter in PATH enthalten ist, dann genügt einer der Befehle
C:\> perl.exe -v
C:\> perl -v
Bei korrekter Einstellung von PATH kann der Befehl aus jedem Verzeichnis erteilt werden, hier z.B. nach Verzweigung auf Laufwerk D:
D:> perl -v
Entwicklung mit → Perl oder → PHP
Script-Interpreter Programme wie perl.exe, php.exe sollten unbedingt in den PATH eingefügt werden.

Das sollten sie nach Installation kontrollieren und allenfalls nachholen.

PATH-Reihenfolge

Die einzelnen Pfade in PATH werden in der angegebenen Reihenfolge durchlaufen. PATH beginnt meist mit
%SystemRoot%\system32;%SystemRoot%;
Diese beiden Pfade sollten unbedingt an erster Stelle bleiben. Die Pfade werden live durch den Wert der Umgebungs-Variablen SystemRoot bestimmt. Bei Ausgabe von set path auf der Konsole ist dieser Wert bereits eingetragen.

Nach jedem Update einer allgemein verwendeten Komponente sollten sie die Variable PATH kontrollieren:
Wenn sie die Versions-Nummern aus den Verzeichnis-Namen installierter Komponenten löschen, dann müssen die Namen (z.B. in PATH) nicht bei jedem Update geändert werden. Das ist für solche Komponenten empfehlenswert, die PATH selbst nicht ändern (derzeit z.B. php )
Wenn eine Komponente selbst ihren Pfad in PATH einträgt (z.B. Perl, MySQL, ..), dann sollte man die Versionsnummern belassen. In diesem Fall bleibt manchmal der Pfad zur alten Version in PATH. Wenn die alte Version nicht mehr vorhanden ist, können sie deren Pfad aus PATH löschen.
Die Reihenfolge der weiteren Pfade ist unkritisch. Danach folgen typisch die Pfade zu Java, Perl, PHP, MySQL, usw., z.B.
C:\Programme\Java\jre\bin;
C:\Programme\Java\jdk\bin;
C:\Programme\Perl\bin;
C:\Programme\Apache Software Foundation\Apache\php;
C:\Programme\MySQL\MySQL Server\bin;
C:\Programme\myprox

Achtung - In PATH folgen die Texte unmittelbar aufeinander. Die Texte sind hier zur besseren Übersicht in Zeilen getrennt.

PATH zu den eigenen Programmen

Es ist praktisch, eigene ausführbare Programme in einem eigenen Verzeichnis (hier _myprox) zu sammeln und den Pfad in PATH einzutragen - normalerweise an letzter Stelle der Liste.
Für eigene Programme sollten eindeutige (sonst nicht vorkommende) und "sprechende" Namen verwendet werden.
Wenn sie für ein eigenes Programm den gleichen Namen verwenden wie ein (im PATH) vorhandenes Programm, dann wird jenes Programm ausgeführt, welches im PATH zuerst gefunden wurde - meist ein unerwünschter Effekt !

Beispiel:
C:\Programme\_myprox\hallo.cmd
Start ohne PATH-Eintragung
C:\> c:\programme\_myprox\hallo
Start nach PATH-Eintragung:
C:\> hallo

Pseudo-Alias

Wenn man den Pfad zu einem Programm aus irgend einem Grund nicht in die Umgebungs-Variable PATH eintragen will, dann gibt es eine Möglichkeit, die gleiche Wirkung mit einem Pseudo-Alias zu erzielen:

Dazu wird ein kleines Konsolen-Script-Programm hergestellt, welches selbst im PATH liegt und den Befehl an einen beliebigen Pfad umleitet.
Details zu Konsolen-Script-Programmen *.cmd
Beispiel:
Annahme: Das Programm cURL ist in diesem Pfad installiert:
C:\Programme\curl\bin\curl.exe
Erzeugen sie eine Text-Datei mit dem Namen des Programms, die selbst in einem mit PATH angegebenen Pfad liegt, z.B.
C:\Windows\curl.cmd
mit diesem Inhalt:
@c:\programme\curl\bin\curl.exe %1 %2 %3
Öffnen sie danach eine Konsole cmd.exe und geben sie ein:
C:\> curl http://curl.haxx.se/
Das Programm sollte ohne Angabe von Pfad oder Erweiterung starten und den HTML-Quelltext jeder beliebigen angegebenen Internet-Adresse anzeigen.
Beachten sie auch die Umgebungs-Variable PATHEXT (nächstes Kapitel) Sie erlaubt unabhängig vom Pfad das Weglassen der Datei-Endung.

PATHEXT

Diese Umgebungs-Variable legt fest, was als 'ausführbares Programm' gelten soll. Sie enthält eine Liste von Datei-Erweiterungen, die normalerweise so beginnt
.COM;.EXE;.BAT;.CMD;
Beim Aufruf von Programmen kan man die Datei-Endung weglassen. In diesem Fall werden bei der Suche nach ausführbaren Programmen nur Dateien berücksichtigt, deren Endung in der Liste von PATHEXT enthalten ist.
Datei-Namen sind (nur !) auf Windows nicht an große oder kleine Buchstaben gebunden, d.h. die Angabe von .EXE ist identisch mit .exe

Beispiel Rechner:
Wenn sie auf der Konsole den Befehl calc eingeben, dann wird die Liste der Pfade in der Variablen PATH auf der Suche nach einer Datei calc.* durchlaufen, deren Datei-Erweiterung in PATHEXT enthalten ist.. Die Suche wird abgebrochen, wenn calc.exe in einem der Pfade gefunden wird. Bei Erfolg wird das Programm - Rechner - ausgeführt, d.h. das Rechner-Fenster wird geöffnet.

Script-Programme

Sind Text-Dateien, die ein Programm in einer Programmiersprache enthalten. Solche Dateien enthalten nur den Quelltext (source), d.h. Anweisungen für die jeweilige Programmiersprache. Zur Ausführung wird ein Interpreter-Programm benötigt, welches die Anweisungen liest und ausführt.

Auch Text-Dateien der Typen .BAT und .CMD sind Script-Programme. Sie werden vom → Commandline-Interpreter gelesen, der in jeder Windows-Version enthalten ist.

Wenn sie eine Script-Programmiersprache installieren, dann ist es sinnvoll, die betreffende Datei-Endung in PATHEXT aufzunehmen, z.B. .PL (Perl) und .PHP

Beispiel:
Um ein → Perl Script-Programm zu starten müssen sie im ungünstigsten Fall 2 komplette Pfade angeben: Zuerst den Pfad zum ausführbaren Programm (Interpreter), danach als Argument den Pfad zum Script:
C:\> C:\Programme\Perl\bin\perl.exe C:\Programme\_myprox\test.pl
Wenn die Pfade zum Perl-Interpreter und zu ihren eigenen Programmen in der Umgebungs-Variablen PATH eingetragen sind, wird es einfacher:
C:\> perl.exe test.pl
Wenn beide Datei-Erweiterungen .EXE und .PL in PATHEXT eingetragen sind, dann genügt
C:> perl test
Wenn darüber hinaus auch die Verknüpfung zwischen Dateien *.pl und dem Perl Interpreter Programm richtig eingestellt wurde (nächster Absatz Ordner-Optionen), dann genügt dieser Befehl zur Ausführung eigener Perl-Programme
C:\> test

Ordner-Optionen

Die Angabe von Datei-Typen erfolgt nach dem internationalen Standard → MIME-TYPE.
Windows-Betriebssysteme richten sich leider nicht danach, sondern erkennen und unterscheiden Datei-Typen nach der Endung ihrer Namen, der 'Datei-Erweiterung'. Manchmal wird dazu sogar der Inhalt untersucht.
Die Dateitypen werden intern anders benannt als nach Standard MIME-Type.
In der Registry-Datenbank erfolgt auf komplizierte Weise die Verknüpfung zwischen Datei-Erweiterung, Win-Datei-Type, MIME-Type und einem oder mehreren für das Öffen der Datei zuständigen Programmen.

Wenn sie eine Script-Programmiersprache installieren, dann ist es sinnvoll, die Verknüpfung zwischen der Datei-Endung und dem Interpreter-Programm vorzunehmen, z.B. .pl mit perl.exe oder .php mit php-win.exe
Ein → Webserver ist davon nicht betroffen, er kann bei richtiger Konfiguration jederzeit dynamische Webseiten mit Perl oder → PHP erzeugen.

Der einfachste Weg, Verknüpfungen zu lesen und zu ändern:
Öffnen sie ein beliebiges Verzeichnis (Ordner) und erteilen sie den Menü-Befehl   Extras | Ordneroptionen | Dateitypen
Nach einer Wartezeit erhalten sie die Liste der registrierten Dateitypen. Kontrollieren bzw. ändern sie die erwünschte Verknüpfung.
Installation:
Manche Programme ändern bei Installation oder Update die bestehenden Verknüpfungen, im schlimmsten Fall ungefragt. Kontrollieren sie daher die Verknüpfungen, wenn eine Datei-Type nach Installation eines Programms nicht mehr reagiert wie erwartet.
Registry
Die Verknüpfung ist nach MS-Sitte kompliziert und undurchschaubar. In manchen Fällen funktioniert die Zuordnung mit den Ordner-Optionen nicht befriedigend. Dann hilft nur, die Registry nach allen Vorkommen dieser Datei-Erweiterung und Dateitype zu durchsuchen und allfällige Ungereimtheiten selbst zu beheben.

Details zum Thema Datei-Erweiterungen und Datei-Typen

Umgebungs-Variablen für den Zugang zum Internet:
HTTP_PROXY, HTTPS_PROXY, FTP_PROXY, NO_PROXY

Zugang zum Internet

In jedem lokalen Netzwerk (LAN) erfolgt die Verbindung mit dem Internet über einen → Router (Proxy-Server).
Jeder an das LAN angeschlossene PC muss den Weg zum Internet (→ IP-Adresse und → Port des Proxy-Servers, evtl. auch Name und Passwort am Proxy-Server) kennen. Dafür gibt es mehrere Möglichkeiten (rechts). Zentral steuerbare Methoden sind den lokalen vorzuziehen.

DHCP-Server (zentrale Bekanntgabe für alle Clients)
JavaScript Autoproxy (zentral vom Webserver)
Umgebungs-Variable (dieses Kapitel)
Windows-Registry
Individuelle Programm-Konfiguration (nur im Notfall).

DHCP-Server

Wenn sie einen eigenen → DHCP-Server betreiben, dann sollte dieser u.a. auch die Router/Proxy-Daten an alle angemeldeten Clients bekanntgeben. Das ist die einfachste, beste und bevorzugte Methode, insbesondere für temporäre Gäste (Notebooks, Netbooks, ...).
Sie funktioniert jedoch nicht an PC mit fix (manuell) eingestellter IP-Adresse oder wenn sie keinen DHCP-Server betreiben. In diesem Fall verwenden sie die weiteren Varianten, am besten in der angegebenen Reihenfolge.

JavaScript-AutoProxy

Auch diese Methode wird zentral gesteuert. Man kann sie als Ersatz oder Ergänzung zum DHCP-Server einsetzen (empfehlenswert), muss jedoch darauf achten, dass die Daten (insbesondere nach einer Änderung !) übereinstimmen !
Details zur AutoProxy-Methode

Umgebungs-Variable

Diese Variablen werden von allen professionellen Programmen erwartet und ihre Angaben befolgt:
HTTP_PROXY, HTTPS_PROXY, FTP_PROXY, NO_PROXY
Sie definieren die Zugangs-Daten für das → HTTP-Protokoll (Webseiten), das HTTPS-Protokoll (verschlüsselte Daten), das FTP-Protokoll (File-Transfer, Upload und Download von Dateien) sowie die zu befolgenden Ausnahmen.
Wenn der → Router / Proxy-Server eine Anmeldung verlangt, dann sind zusätzlich diese Variablen definiert:
HTTP_PROXY_USER, HTTP_PROXY_PASS

Auf Linux werden diese Umgebungs-Variablen verwaltet und verwendet, auf Windows muss man sich selbst darum kümmern. das ist jedoch sehr empfehlenswert:
Die Verwendung von Umgebungs-Variablen ist eine Standard-Methode, und mit allen Programmen und Programmiersprachen wesentlich einfacher und übersichtlicher als die Manipulation der Windows-Registry.

Windows-Registry

Wenn es keine bessere Möglichkeit gibt, dann verwaltet man die Internet Zugangs-Daten mit der Windows Registry Datenbank.
Sie werden mit Systemsteuerung | Internetoptionen eingestellt und in der Registry-Datenbank gespeichert, z.B. in
HKEY_CURRENT_USER \ Software \ Microsoft \ Windows \ CurrentVersion \ Internet Settings \ ProxyServer, ProxyOverride

Individuelle Konfiguration

Viele Programme bieten in ihrer Konfiguration die Möglichkeit zur individuellen Einstellung der Router/Proxy-Daten. Das sollte die letzte Wahl sein - nur dann, wenn von diesem Programm weder die Umgebungs-Variablen noch die Registry-Daten befolgt werden.

HTTP_PROXY

Diese Umgabungs-Variable gibt den Pfad zum Internet an, d.h. → IP-Adresse und → Port zum → Router / Proxy-Server des lokalen Netzwerks.

Die IP-Adresse erfährt man mit Standard-Methoden, z.B. mit diesen Konsolen-Anweisungen (Linux, Windows):
# ip addr show
# ifconfig
C:\> ipconfig

Der Router-Port ist nicht festgelegt und von der jeweiligen Konfiguration abhängig. Häufig verwendete Ports sind 3128, 6588, 8080, man kann aber auch jeden anderen freien Port einstellen.

Die Beispiele zeigen verschiedene Varianten zur Steuerung des (meist verwendeten) → HTTP-Protokolls. Die Variablen der anderen Protokolle (HTTPS, FTP) werden sinngemäß verwendet und sind meist auch identisch konfiguriert.

Die Definition von Umgebungs-Variablen an der Konsole gilt nur, solange die Konsole noch geöffnet ist.
Die dauerhafte Eintragung nehmen sie hier vor: Tipp: Kontrollieren sie diese Daten nach einem Neustart an der Konsole:
C:\> set h

Beispiel: Eintragung an der Windows-Konsole:
C:\> set HTTP_PROXY=192.168.0.2:1234
C:\> set HTTPS_PROXY=192.168.0.2:1234
C:\> set FTP_PROXY=192.168.0.2:2345
Ersetzen sie die angegebene IP-Adresse (hier 192.168.0.2) und den Port (hier 1234) durch die realen Daten ihres Routers.
Verwenden sie keine zusätzlichen Leerzeichen, diese werden sonst als Teil der Daten-(Strings) interpretiert

Wenn der Router mit Name und Passwort geschützt ist, dann muss man zusätzlich diese Umgebungs-Variablen definieren:
C:\> set HTTP_PROXY_USER=ich
C:\> set HTTP_PROXY_PASS=geheim
Alternative: Angabe der Zugangs-Daten inklusive User und Passwort in einer einzigen Variablen:
C:\> set HTTP_PROXY=ich:geheim@192.168.0.2:1234

Unter besonderen (Sicherheits-kritischen) Bedingungen werden manchmal nur wenige Umgebungs-Variable vom aufrufenden Programm weitergegeben. Kontrollieren sie bei Verdacht, ob ein (eigenes) Programm diese Daten überhaupt erhalten hat. Alle gängigen Programmiersprachen bieten die Möglichkeit, die erhaltenen Umgebungs-Variablen auszugeben.

NO_PROXY

Diese Umgebungs-Variable gibt an, welche PC-Namen und IP-Adressen nicht über den Router (Proxy-Server) erreicht werden, weil sie sich im gleichen lokalen Netzwerk befinden. Die Angabe ist nur im Zusammenhang mit mindestens einer der oben erwähnten Variablen HTTP_PROXY, HTTPS_PROXY, FTP_PROXY sinnvoll und nur dann, wenn sich im lokalen Netzwerk mindestens 1 Webserver bzw. FTP-Server befindet.
Beispiel: Ausnahme für einen eigenen Webserver an der Adresse 192.168.0.1
C:\> set NO_PROXY=192.168.0.1

Liste von Ausnahmen:
Man kann eine Liste mehrerer PC-Namen und IP-Adressen als NO_PROXY Ausnahmen angeben. Die Elemente der Liste werden mit Beistrich getrennt. Beispiel: Ausnahme für den LAN-Server und für einen Server am eigenen PC:
C:\> set NO_PROXY=localhost,127.0.0.1,192.168.0.1

Adressen-Bereiche:
Wenn sich im lokalen Netzwerk mehrere Server befinden, dann kann man diese in der Liste einzeln angeben. Alternativ kann man das ganze LAN als Ausnahme angeben, z.B. mit
C:\> set NO_PROXY=localhost,127.0.0.0/8, 10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16
Definieren sie die Liste ohne Leerzeichen - diese wurden hier zur besseren Lesbarkeit eingefügt.
'Wildcards' wie z.B. * sind nicht zulässig.

Webserver und Proxy-Server
In einem kleinen LAN arbeitet oft der gleiche PC als Webserver und als Proxy-Server. In diesem Fall muss man den Webserver (auf Port 80) direkt erreichen, alle anderen HTTP-Aufträge jedoch an den Router (an der gleichen IP-Adresse, jedoch je nach Konfiguration an einem anderen Port) leiten.
Dazu kann man die ausgenommenen Ports (z.B. 80 für den Webserver) ausdrücklich angeben:
C:\>set HTTP_PROXY=192.168.0.2:1234
C:\>set NO_PROXY=192.168.0.2:80

Empfohlene Umgebungs-Variablen: TZ, CLASSPATH, LOCALE

Zusätzlich zu den ↑ *_PROXY Variablen werden u.a. diese Umgebungs-Variablen empfohlen:

TZ

Die Programmiersprache PHP und einige von Linux portierte Programme erwarten eine Umgebungs-Variable TZ mit Angabe der Zeitzone. Für PHP kann diese Angabe zwar auch anders erfolgen, es ist jedoch besser, diese Information im Zweifel immer anzubieten. Die Namen der Zeitzonen sind leider international nicht eindeutig, immerhin verwenden alle Linux-Versionen die gleiche Norm.
Details zur Zeitzone auf den Seiten Datum & Zeit und Windows & Zeit

Eintragung an der Windows-Konsole:
C:\> set TZ=Europe/Berlin
C:\> set TZ=Europe/Bern
C:\> set TZ=Europe/Zurich
C:\> set TZ=Europe/Vienna

CLASSPATH

Die Installation von → Java ist auf jedem PC sehr empfehlenswert und auf Linux selbstverständlich. Leider muss man die Installation auf Windows selbst vornehmen.
Dabei wird die Umgebungs-Variable PATH ergänzt und für die EntwicklerInnen-Version die Variable CLASSPATH angelegt.

Details zur Umgebungs-Variablen PATH (diese Seite) Installation von Java auf Windows
Für reine Java-Anwendung genügt die Ergänzung von PATH
C:\Programme\Java\jre\bin

Für Java-Entwicklung wird PATH nochmals ergänzt
C:\Programme\Java\jdk\bin
und CLASSPATH neu angelegt
C:\Programme\Java\jdk\src.zip
dazu kommt der Pfad zu eigenen Java-Programmen.

LOCALE

Professionelle Betriebssysteme verwenden zur Einstellung auf den Standort den LOCALE-Teil des international normierten POSIX-Standards. Windows ignoriert zwar (auch) diesen Standard, in manchen Win-Systemen sind jedoch POSIX-kompatible Bibliotheken installiert - vorwiegend auf EntwicklerInnen-PC.
Alle Programme, die unter Verwendung von Standard POSIX-Bibliotheken (z.B. C++) erstellt wurden, können LOCALE-Daten zur Anpassung an den Standort anfordern. Wenn solche Anfragen nicht programmiert sind, nicht funktionieren, oder wenn das Betriebssystem diese Daten nicht liefert, werden in POSIX definierte Minimal-Einstellungen verwendet.
Auf Linux erhalten sie eine Liste der LOCALE-Einstellungen mit dem Konsolen-(Shell)-Befehl locale, auf Windows erhalten sie die Liste (falls definiert) mit set lc

Konsultieren sie die Doku der verwendeten Programmiersprachen und/oder Bibliotheken, um die Variablen der LOCALE-Gruppe passend einzustellen.
Oft lassen sich LOCALE-Einstellungen über Umgebungs-Variable LC_* an Standard-konforme Programme weitergeben, z.B.
C:\> set LC_TIME=de_AT.88591

Linux-AG: Locales und Native Language Support (de)

XHTML CSS