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

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

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

有帮助吗?

解决方案

有什么理由必须通过注册表来完成吗?

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

其他提示

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

你可以尝试跑步 过程监控器 并查看它是否看到设置该值的尝试。

为什么要使用 CustomAction 来实现此目的?Windows Installer 本机支持更新环境变量。

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top