Beibehaltung einer Umgebungsvariablen durch Ruby

8

Ich versuche, meine DOS-Umgebungsvariable in Ruby zu setzen und sie nach dem Beenden des Skripts persistent zu machen. Wenn ich beispielsweise ein Ruby-Skript set_abc_env.rb möchte, um die Umgebungsvariable 'ABC' auf 'blah' zu setzen, erwarte ich Folgendes:

%Vor%

Wie mache ich das?

    
user24560 10.10.2008, 04:54
quelle

2 Antworten

25

Sie können auf Umgebungsvariablen über das Ruby ENV-Objekt zugreifen:

%Vor%

Schlechte Nachrichten sind, wie MSDN sagt , kann ein Prozess nie Ändern Sie direkt die Umgebungsvariablen eines anderen Prozesses, der kein Kind dieses Prozesses ist. Wenn das Skript beendet wird, gehen alle Änderungen verloren.

Eine gute Nachricht ist, dass Microsoft Windows Umgebungsvariablen in der Registrierung speichert und Umgebungsvariablen an das System weitergeben kann. Dies ist eine Möglichkeit, Benutzerumgebungsvariablen zu ändern:

%Vor%

In der Dokumentation wird außerdem angegeben, dass Sie sich abmelden, erneut anmelden oder eine WM_SETTINGCHANGE-Nachricht senden sollten, um Änderungen an Anwendungen vorzunehmen. So kann in Ruby gesendet werden:

%Vor%     
Alexander Prokofyev 10.10.2008, 07:41
quelle
1

Für alle anderen, die nach einer Lösung für dieses Problem suchen und nach einem Hack suchen, der sich nicht ein- oder ausloggen muss, habe ich diese Lösung für ein ähnliches Problem gefunden:

PROBLEM:

Meine Arbeit ist abhängig von der Kombination von Ruby und einem Befehlszeilenprogramm namens SETENV.EXE , das von Vincent entwickelt wurde Fatica. Es ist zu diesem Zeitpunkt mehr als ein Jahrzehnt alt, aber funktioniert gut in Windows XP (noch nicht unter Windows 7 getestet). Es funktioniert besser als setx-Dienstprogramm von MS IMHO. Zum Löschen von Sachen. Stellen Sie sicher, dass setenv über die Befehlszeile verfügbar ist. Setzen Sie es in einige C: \ Tools und setzen Sie C: \ Tools in Ihren PATH.

Hier ist ein kurzes Beispiel für eine Methode, die es verwendet:

%Vor%     
konung 30.03.2011 21:00
quelle