Einzelnen Beitrag anzeigen

Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.116 Beiträge
 
Delphi 11 Alexandria
 
#13

Re: Umgebungsvariablen langfristig setzen

  Alt 10. Apr 2007, 20:00
Moin Olli,

Zitat:
Geht ja auch ohne Konsole, dann eben programmatisch.
ich wollte auf etwas anderes raus.
Durch eben dieses Problem bin ich zu Foren gekommen

Wenn ich, um Zuge einer Batchverarbeitung, eine Umgebungsvariable so setzen will, dass sie nach meinem Programm zur Verfügung steht, sieht MS vor, dass man eine Batchdatei mit dem entsprechenden Set-Kommando erstellt, die dann nach dem Programm aufgerufen werden soll.
Das ist natürlich eine gangbare Lösung, aber irgendwie schwebte mir eine andere Lösung vor.
Grober Ablauf (vorausgesetzt, das Environment passt in 4Kb, auch nach dem Setzen einer Umgebungsvariablen)
Man ermittelt den Parent Prozess.
Man ermittelt die Adresse des Environmentblockes (GetEnvrionmentStringsW) (*)
Man setzt die Umgebungsvariable, ganz normal mit SetEnvironmentVariable
Man kopiert den eigenen Environmentblock in den des Parent-Prozesses.

Unter XP-Pro SP 2 hat das, auch mit normalen Benutzerrechten (!), funktioniert.

(*)
Leider hat die Sache hier einen unschönen Haken:
Bei allen Versuchen, die ich gemacht hatte lag das Environment immer an der gleichen Adresse, unabhängig davon, welchen Prozess ich mir angeschaut habe. Leider ist das aber nicht zwingend erforderlich , so dass man an dieser Stelle scheitern kann.
Bevor man versucht dort etwas reinzuschreiben, sollte man also genau prüfen, das der angesprochene Speicherbereich auch wirklich das Environment enthält.

Die Begrenzung auf 4Kb ergibt sich dadurch, dass sich bei überschreiten der Grenze die Startadresse verschieben kann.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat