Systemvariablen setzen

  • Hi,

    ich möchte gerne Systemvariablen setzen (keine temporären mit EnvSet!!!). Ich weiß, dass es das CMD-Tool setx gibt, möchte das ganze aber mit AutoIt-Mitteln lösen. habe dazu folgendes Skript geschrieben:

    [autoit]

    Func _EnvSetSys(Const $S_VAR, Const $V_VAL = "")
    Local $s_type = "REG_SZ"
    If StringInStr($V_VAL, "%") Then $s_type = "REG_MULTI_SZ"
    Return (RegWrite("HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment", $S_VAR, $s_type, $V_VAL))
    EndFunc ;==>_EnvSetSys

    [/autoit][autoit][/autoit][autoit]

    _EnvSetSys("MyProgramFiles", "%PROGRAMFILES%\MyApps")
    MsgBox(64, "_EnvSetSys", EnvGet("MyProgramFiles"))

    [/autoit]


    Das Ganze wird auch wunderbar eingetragen und taucht auch unter "System->Eigenschaften->Umgebungsvariablen" auf, ich kann sie bloß nicht mittels EnvGet oder über Kommandozeile echo %MyProgramFiles% auslesen (vermute ein Neustart ist notwendig)!

    Weiß jemand, wie ich diese Restriktion umgehen kann, so dass die Variable sofort verfügbar ist?

  • Pack doch einfach noch EnvSet($S_VAR, $V_VAL) und EnvUpdate() mit in deine Funktion ein, dann hast du sie auch sofort zur Verfügung.

    Grüße,
    Buffo

    Einmal editiert, zuletzt von Buffo (14. November 2007 um 10:10)

  • Ja, dann geht bloß der Sinn der Ganzen Angelegenheit verloren. Ich möchte die Variable ja SYSTEMWEIT SOFORT zur Verfügung haben und nicht nur in meinem Skript...

  • Bei mir funktioniert es so:

    [autoit]

    RegWrite("HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Session Manager\Environment", "Test", "REG_SZ", "Testwert")
    EnvUpdate()

    [/autoit]

    Einmal editiert, zuletzt von Buffo (14. November 2007 um 12:44)