Frage

Ich habe eine benutzerdefinierte Installationsaktion, die die PATH-Umgebung aktualisiert und eine zusätzliche Umgebungsvariable erstellt.Das Anhängen eines Verzeichnisses an die vorhandene Pfadvariable funktioniert einwandfrei, aber aus irgendeinem Grund waren meine Versuche, eine neue Umgebungsvariable zu erstellen, erfolglos.Der Code, den ich verwende, ist:

        using (RegistryKey reg = Registry.LocalMachine.OpenSubKey(@"SYSTEM\CurrentControlSet\Control\Session Manager\Environment", true))
        {
            reg.SetValue("MYVAR", "SomeVal", RegistryValueKind.ExpandString);
        }

Bearbeiten:Das Betriebssystem ist 32-Bit-XP und soweit ich das beurteilen kann, fällt es stillschweigend aus.

War es hilfreich?

Lösung

Gibt es einen Grund, warum Sie dies über die Registrierung tun müssen?

Wenn nicht, können Sie Environment.SetEnvironmentVariable() seit .NET 2.0 verwenden.Es ermöglicht die Einstellung auf Maschinen-, Prozess- oder Benutzerbasis.

Andere Tipps

Welches Betriebssystem ist das?Ist es auf einem 64-Bit-System?Was ist die Art des Fehlers:still oder wird eine Ausnahme ausgelöst?

Du könntest es mit Laufen versuchen ProcessMonitor und prüfen, ob der Versuch, den Wert festzulegen, erkannt wird.

Warum verwenden Sie hierfür eine CustomAction?Der Windows Installer unterstützt die native Aktualisierung von Umgebungsvariablen.

Es stellte sich heraus, dass es ein anderes Problem gab, das den Aufruf des Codes in meiner Frage verhinderte.Allerdings habe ich die Win32-Assembly verwendet, da der Beispielcode, dem ich folgte, geschrieben wurde, bevor die Environment-Assembly verfügbar wurde.Vielen Dank, Peter, für den Hinweis auf die Umgebungs-API.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top