138701
Goto Top

Lokale Variable belegen

Hallo zusammen,

Wie kann ich, wenn ich zwei cmd-Fenster geöffnet habe, von dem einen die Variablen des anderen verändern?

Content-Key: 562890

Url: https://administrator.de/contentid/562890

Printed on: April 24, 2024 at 22:04 o'clock

Member: manuel-r
manuel-r Apr 03, 2020 at 08:40:19 (UTC)
Goto Top
AFAIR gar nicht, weil die Umgebungsvariablen beim starten der Kommandozeile eingelesen werden.

Manuel
Member: TK1987
TK1987 Apr 03, 2020 updated at 08:49:31 (UTC)
Goto Top
Moin,

bei 2 bereits geöffneten Fenstern geht das nicht.
Was möglich wäre, ist mit einer Batch eine andere zu öffnen und Argumente mitzugeben, falls das dein Ziel war.

Gruß Thomas
Mitglied: 138701
138701 Apr 03, 2020 at 09:05:27 (UTC)
Goto Top
Es muss gehen. Nichts ist unmöglich. Die Variablen werden ja irgendwo auf dem Computer gespeichert. Bloß wo (RAM), und wie kann man seinen Inhalt verändern?
Member: manuel-r
manuel-r Apr 03, 2020 at 10:27:30 (UTC)
Goto Top
Es muss gehen. Nichts ist unmöglich.
Was nicht vorgesehen ist funktioniert halt nicht. Du kannst auch mit einem Benziner kein Diesel tanken obwohl beides doch Verbrennungsmotoren sind.

Wenn du unbedingt willst kannst du den Umweg über die Registry nehmen. Dazu verwendest du in Kommandozeile #1 dann etwa sowas
Powershell -Command New-ItemProperty -Path "HKCU:\Environment" -Name "MeineVariable" -PropertyType STRING -Value "123"  
und in Kommandozeile #2 sowas in der Art
Powershell -Command (Get-ItemProperty -Path "HKCU:\Environment").MeineVariable  

Schön ist aber anders...
Member: Penny.Cilin
Penny.Cilin Apr 03, 2020 updated at 11:03:02 (UTC)
Goto Top
Zitat von @138701:

Es muss gehen. Nichts ist unmöglich. Die Variablen werden ja irgendwo auf dem Computer gespeichert. Bloß wo (RAM), und wie kann man seinen Inhalt verändern?
Dummes Geschwätz, sorry. Naja, heute ist Freitag.

Was du machen kannst, ist in der ersten Eingabeaufforderung (cmd.exe) die Umgebungsvariable in eine Datei speichern. In der zweiten Eingabeaufforderung (cmd.exe) die Datei einlesen.

Oder die Umgebungsvariable in der Registry ablegen und wieder auslesen.

Gruss Penny.
Mitglied: 138701
138701 Apr 03, 2020 at 13:20:20 (UTC)
Goto Top
Ich bin mir sicher es gibt einen Weg. Bisher hat alles irgendwann funktioniert, obwohl es immer vorher mindestens 10 Programmierer gab, die meinten es wäre unmöglich.
Member: manuel-r
manuel-r Apr 03, 2020 at 13:26:54 (UTC)
Goto Top
Ich bin mir sicher es gibt einen Weg.

Ok, dann weißt du ja wie es geht. Verlauf dich nicht.

Manuel
Mitglied: 143728
Solution 143728 Apr 03, 2020 updated at 13:47:10 (UTC)
Goto Top
Das ging früher mal hiermit
Dynamically Add/Edit Environment Variables of Remote Process

Inzwischen sind die Sicherheitsmaßnahmen des Betriebssystems natürlich drastisch erhöht worden so dass ein Verändern des Speichers einer anderen Anwendung nicht mehr so einfach machbar ist, aus gutem Grund!.
Wenn man möchte das sich zwei Anwendungen untereinander unterhalten können sollen, greift man in der Regel zu Named- oder Anomymous-Pipes

How to: Use Named Pipes for Network Interprocess Communication
Member: manuel-r
manuel-r Apr 03, 2020 at 13:40:50 (UTC)
Goto Top
Wenn ich es richtig verstanden habe macht das Tool aber was völlig anderes. Es soll wohl in der Lage sein einem Process P1 eine Variable V mit dem Wert W1 zu übergeben und einem gleichzeitig laufenden Prozess P2 die Variable V mit dem Wert W2.
Der TO hat hat aber zweimal den Prozess cmd.exe. Und selbst wenn er jetzt auf die Idee kommen würde einfach eine cmd1.exe und eine cmd2.exe zu haben ändert das nichts an der Tatsache, dass der Kommandointerpreter nur einmal und - und zwar beim Start - die Inhalte der Umbegungsvariablen einliest und daher von einer danach stattfindenden Änderung der Variablen und Werte nichts mitbekommt.

Aber er ist sich ohnehin sicher, dass es einen Weg gibt...
Mitglied: 143728
143728 Apr 03, 2020 updated at 13:46:20 (UTC)
Goto Top
Hatte den Beitrag oben noch ergänzt.

Das Tool konnte damals tatsächlich die Environment Variables eines anderen Prozesses hinzufügen und ändern, ist aber inzwischen nicht mehr ohne ergeblichen Aufwand und Exploits möglich.

Für Interprocess Communication gibt es ja heute aber einige Auswahl (s. oben). Wer dafür noch mit Batch rum krabbelt kann sich gleich in den Sarg legen face-big-smile.
Mitglied: 138701
138701 Apr 03, 2020 at 17:08:39 (UTC)
Goto Top
Der Quellcode des Programmes hat mich stark weitergebracht. Danke @143728 !