在我们继续使用环境变量并按下确定之后,使用WMI设置环境变量不起作用

时间:2011-11-21 21:45:35

标签: c# wmi

这是上下文。我们使用我们的应用程序通过WMI设置很多东西,包括环境变量。

我们使用此代码(简化)来设置环境变量

ManagementClass envClass = new ManagementClass(this.oConnector.Scope, new ManagementPath(WMIHelper.Win32Environment), null);
ManagementObject mo = envClass.CreateInstance();
mo["Name"] = variable;
mo["UserName"] = user;
mo["VariableValue"] = value.Trim();
mo.Put();

现在,当我们打开命令提示符时,我们看不到环境变量的值。如果我去打开计算机属性并进入环境变量页面就可以了。我按两次ok,重新打开一个命令提示符,变量突然出现了。

有人知道为什么会这样吗?这几乎就像在放入环境变量之后我们必须做一些其他事情来强制刷新或其他东西。

谢谢

1 个答案:

答案 0 :(得分:0)

您确定开始在设置之后读取环境变量的过程吗?

在进程启动时复制Env变量,并且进程永远不会看到进程启动后对系统的env变量的任何更改。 AFAIK,没有办法绕过这种行为。通过打开一个新的cmd窗口,您将启动一个新的cmd.exe进程,该进程获取变量的新值。