Einzelnen Beitrag anzeigen

hathor
(Gast)

n/a Beiträge
 
#2

Re: Aktuelles Environment für Dienstemanager bzw. Dienst übe

  Alt 6. Nov 2007, 09:42
Die anderen Programme müssen von den Änderugen erfahren - Stichwort: BROADCAST.
Vielleicht hilft Dir der folgende Code "auf die Sprünge".

Delphi-Quellcode:
function SetGlobalEnvironment(const Name, Value: string;
  const User: Boolean = True): Boolean;
resourcestring
  REG_MACHINE_LOCATION = 'System\CurrentControlSet\Control\Session Manager\Environment';
  REG_USER_LOCATION = 'Environment';
begin
  with TRegistry.Create do
    try
      if User then { User Environment Variable }
        Result := OpenKey(REG_USER_LOCATION, True)
      else { System Environment Variable }
      begin
        RootKey := HKEY_LOCAL_MACHINE;
        Result := OpenKey(REG_MACHINE_LOCATION, True);
      end;
      if Result then
      begin
        WriteString(Name, Value); { Write Registry for Global Environment }
        { Update Current Process Environment Variable }
        SetEnvironmentVariable(PChar(Name), PChar(Value));
        { Send Message To All Top Window for Refresh }
        SendMessage(HWND_BROADCAST, WM_SETTINGCHANGE, 0, Integer(PChar('Environment')));
      end;
    finally
      Free;
    end;
end;
EDIT:
Sorry, sehe gerade, dass der Code in einem Deiner Links auch auftaucht...
Vielleicht solltest Du Deinen Code mal veröffentlichen - kann ja sein, dass andere Programme nicht "richtig aufgeklärt" werden über die Änderungen.
  Mit Zitat antworten Zitat