In manchen Fällen kommt man um Environment Variablen nicht herum. Sie machen es auch einfach, globale Pfade für Linker, Präprozessor und auch für die Ausführung (PATH) zu setzen, oder eben auch EXEs und DLLs zu steuern.
Solche Environment Variablen, bzw. INCLUDE und LIB Pfade zu setzen für das ganze System kann mühsam sein wenn man die Windows System UI nutzt. Der Aufruf ist umständlich und es erfolgt ein UAC-Prompt. Eine andere Variante wäre die Nutzung einer Reg-Datei. Dazu muss man aber wieder der UAC-Prompt über sich ergehen lassen.
Es geht viel einfacher, mit dem Helferlein SETX.EXE, das seit Vista nicht mehr nur im Windows Ressource Kit drin ist. Mit SETX kann man sich Ruckzuck ein kleines Batch-File schreiben, dass alle wichtigen Umgebungsvariablen für eine bestimmte Projektumgebung setzt.
Genial ist einfach, dass ab diesem Moment für jedes neu gestartete Programm diese Environment Variablen gelten. Natürlich inklusive der Visual Studio Umgebung.
In der Verbindung mit dem Aufruf von DEVENV /useenv kann man damit sehr schnell seinen Rechner auf eine komplett andere Projektumgebung einstellen. Und das ganze auch ohne UAC-Prompt 🙂 Ja! Man glaubt es kaum. Es erfolgt ja auch nur Zugriff auf HKCU.
Anmerkung:Ich benutzt sehr gerne den Property-Manager nur ist es eben nur eine Lösung für alle Software, die aus dem Visual-Studio heraus gestartet wird, und es nützt gar nichts, wenn man die EXE/DLL selber mit unterschiedlichen Umgebungen testen will.
Und SETX ist auch noch wirklich extrem flexibel. Man kann nicht nur einfach eine Environment Variable setzen, wie man es mit SET kennt. Als Quelle können hier sogar Tetxdateien, Registryschlüssel genutzt werden. Und das Multitalent SETX kann sogar bei Angabe von Computername, Nutzername und Kennwort remote benutzt werden und damit auch die Systemweiten Parameter verändern.
Hier die Beschreibung von SETX /?
SetX hat drei verschiedene Ausführungsmethoden:
Syntax 1:
SETX [/S System [/U [Domäne\]Benutzer [/P [Kennwort]]]] var Wert [/M]
Syntax 2:
SETX [/S System [/U [Domäne\]Benutzer [/P [Kennwort]]]] var /K
Registrierungspfad [/M]
Syntax 3:
SETX [/S System [/U [Domäne\]Benutzer [/P [Kennwort]]]]
/F Datei {var {/A x,y | /R x,y Zeichenfolge}[/M] | /X}
[/D Trennzeichen]
Beschreibung:
Erstellt oder bearbeitet Umgebungsvariablen in der Benutzer- oder
Systemumgebung. Ermöglicht das Festlegen von Variablen, die auf
Argumenten, Registrierungsschlüsseln oder Dateieingabe basieren.
Parameterliste:
/S System Remotesystem für die Verbindungsherstellung.
/U [Domäne\]Benutzer Bestimmt den Benutzerkontext, unter dem
der Befehl ausgeführt wird.
/P [Kennwort] Bestimmt das Kennwort für den
Auslassung fordert zur Kennworteingabe auf.
Variable Bestimmt die zu setzende Umgebungsvariable.
Wert Bestimmt einen zu setzenden Wert
für die Umgebungsvariablen.
/K Registrierungspfad Bestimmt, dass die Variable auf Informationen
aus einem Registrierungsschlüssel basiert.
Gültiges Pfadformat:
Struktur\Schlüssel\…\Wert, z. B.
HKEY_LOCAL_MACHINE\System\CurrentControlSet\
Control\TimeZoneInformation\StandardName.
/F Datei Bestimmt den Dateinamen der zu verwendenden
Textdatei.
/A x,y Bestimmt die absoluten Dateikoordinaten
(Zeile X, Element Y) als Parameter, nach denen
innerhalb der Datei gesucht werden soll.
/R x,y Zeichenfolge Bestimmt die relativen Dateikoordinaten im
Verhältnis zur „Zeichenfolge“ als Suchparameter.
/M Legt fest, dass die Variable in der
systemübergreifenden Umgebung
(HKEY_LOCAL_MACHINE) gesetzt werden. Der
Standardwert wird unter der Umgebung gesetzt
(HKEY_CURRENT_USER).
/X Zeigt Dateiinhalte mit den x,y Koordinaten an.
/D Trennzeichen Bestimmt zusätzliche Trennzeichen, wie z. B.
„,“ oder „\“. Standardtrennzeichen sind
Leerzeichen, Tabulator, Wagenrücklauf und
Zeilenvorschub. Beliebige ASCII-Zeichen können
als zusätzliche Trennzeichen verwendet
werden. Die max. Anzahl an Trennzeichen,
einschließlich Standardtrennzeichen beträgt 15.
/? Zeigt diese Hilfe an.
HINWEIS: 1) SETX schreibt Variablen in die übergeordnete Umgebung
in der Registrierung.
2) Auf einem lokalen System sind Variablen, die mit
diesem Programm erstellt oder bearbeitet wurden,
erst in zukünftigen und nicht in aktuellen
cmd.exe Befehlszeilenfenstern verfügbar.
3) Auf einem Remotesystem sind Variablen, die mit
diesem Programm erstellt oder bearbeitet wurden, erst
bei der nächsten Anmeldesitzung verfügbar.
4) Gültige Registrierungsschlüssel-Datentypen:
REG_DWORD, REG_EXPAND_SZ, REG_SZ, REG_MULTI_SZ
5) Unterstützte Registrierungsstrukturen: HKEY_LOCAL_MACHINE
HKEY_CURRENT_USER (HKCU).
6) Bei Trennzeichen wird zwischen Groß-/Kleinschreibung
unterschieden.
7) REG_DWORD-Werte werden aus der Registrierung
im Dezimalformat extrahiert.
Beispiele:
SETX MACHINE COMPAQ
SETX MACHINE „COMPAQ COMPUTER“ /M
SETX MYPATH „%PATH%“
SETX MYPATH ~PATH~
SETX /S System /U Benutzer /P Kennwort MACHINE COMPAQ
SETX /S System /U Benutzer /P Kennwort ^%PATH^%
SETX TZONE /K HKEY_LOCAL_MACHINE\System\CurrentControlSet\
Control\TimeZoneInformation\StandardName
SETX BUILD /K „HKEY_LOCAL_MACHINE\Software\Microsoft\Windows
NT\CurrentVersion\CurrentBuildNumber“ /M
SETX /S System /U Benutzer /P Kennwort TZONE /K HKEY_LOCAL_MACHINE\
System\CurrentControlSet\Control\TimeZoneInformation\
StandardName
SETX /S System /U Benutzer /P Kennwort BUILD /K
„HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\
CurrentVersion\CurrentBuildNumber“ /M
SETX /F ipconfig.out /X
SETX IPADDR /F ipconfig.out /A 5,11
SETX OCTET1 /F ipconfig.out /A 5,3 /D „#$*.“
SETX IPGATEWAY /F ipconfig.out /R 0,7 Gateway
SETX /S System /U Benutzer /P Kennwort /F c:\ipconfig.out /X