0

我有一个自定义安装程序操作来更新 PATH 环境,并创建一个额外的环境变量。将目录附加到现有路径变量工作正常,但由于某种原因,我尝试创建新环境变量没有成功。我正在使用的代码是:

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

编辑:操作系统是 32 位 XP,据我所知,它正在默默地失败。

4

4 回答 4

1

这是什么操作系统?是在 64 位系统上吗?失败的性质是什么:沉默还是抛出异常?

您可以尝试运行ProcessMonitor并查看它是否看到设置值的尝试。

于 2008-09-02T22:57:09.253 回答
1

是否有任何理由必须通过注册表进行操作?

如果没有,您可以从 .NET 2.0 开始使用 Environment.SetEnvironmentVariable()。它允许您在机器、进程或用户的基础上进行设置。

于 2008-09-02T22:58:11.437 回答
1

为什么要为此使用 CustomAction?Windows Installer 支持本地更新环境变量。

于 2008-11-19T19:15:36.760 回答
0

事实证明,还有另一个问题阻止了我的问题中的代码被调用。但是,我使用的是 Win32 程序集,因为我遵循的示例代码是在 Environment 程序集可用之前编写的。所以感谢彼得指出环境 API。

于 2008-09-03T15:36:30.660 回答