题
我有一个自定义安装程序操作,可以更新 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。
不隶属于 StackOverflow