![]() |
SetEnvironmentVariable global?
Gibt es eine Möglichkeit eine globale Systemvariable zu setzen?
SetEnvironmentVariable funktioniert ja leider nur für den aktuellen Prozess und ist daher für mich unbrauchbar. |
Re: SetEnvironmentVariable global?
Hallo,
wahrscheinlich gibt es eine "bessere" Lösung für dein Problem, aber weil du deinen Lösungsansatz bereits gewählt hast und ich dein Problem nicht erkenne: ![]() Freundliche Grüße |
Re: SetEnvironmentVariable global?
Moin FriFra,
könntest Du bitte mal ein wenig präzisieren, wie die Zusammenhänge zwischen den beteiligten Prozessen sind. Der Weg über HWND_BROADCAST und WM_WININICHANGE wie er auf der von marabu verlinkten Site gezeigt wird funktioniert nur dann, wenn die Anwendung, die die Message erhält, diese auch verarbeitet, was, IMHO, kaum eine tut. |
Re: SetEnvironmentVariable global?
Hallo Chris,
nur Programme, die das auch wirklich wollen, werten zur Laufzeit die Nachricht WM_SETTINGCHANGE (!) aus. Ich habe lange überlegt, wozu der OP das brauchen könnte. Als IPC Ersatzlösung lässt sich der Ansatz nicht wirklich positionieren. Was bleibt dann noch? Ein Utility, welches den windows-eigenen Dialog für Umgebungsvariablen nachbildet? Eher auch nicht. Vermutlich ist die Idee das Aufsetzen einer globalen Variable, damit ein später gestartetes Programm diese im eigenen environment block findet und auswerten kann. Dazu ist der Klimmzug nicht nötig, da man statt ShellExecute() auch CreateProcess() einsetzen und dort das Environment massgeschneidert bereit stellen könnte. Bin auch gespannt auf die Antwort auf deine Frage. Freundliche Grüße |
Re: SetEnvironmentVariable global?
Ein ähnliches Problem hat ich auch mal:
![]() Vielleicht hilft es dir, mfg, Björn |
Re: SetEnvironmentVariable global?
Moin Marabu,
ich habe da eher den Verdacht, dass es darum geht, das ein in der Konsole gestartetes Programm eine Umgebungsvariable setzten soll, die dann, nach dessen Ende, verarbeitet wird. Aber lassen wir uns mal überraschen. |
Re: SetEnvironmentVariable global?
Ja, so ungefähr ;) ... Ein Programm soll eine Umgebungsvariable setzen und diese soll dann für alle nachfolgend gestarteten Anwendungen auslesbar sein. Für irgendwelche Klimmzüge mit der Registry habe ich keine Möglichkeit, da diese Variable von einem Account mit eingeschränkten Rechten gesetzt werden soll.
|
Re: SetEnvironmentVariable global?
Guten Morgen,
Zitat:
Delphi-Quellcode:
Alle Programme, die jetzt gestartet werden, finden die Variable DPTEST.
procedure TDemoForm.FormCreate(Sender: TObject);
var cmd, shell: string; begin SetEnvironmentVariable('DPTEST', 'FRIFRA'); shell := GetEnvironmentVariable('COMSPEC'); cmd := '/K SET DPTEST'; ShellExecute(0, '', PAnsiChar(shell), PAnsiChar(cmd), '', SW_SHOW); Release; end; Freundliche Grüße |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:09 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz