【发布时间】:2011-11-06 00:56:13
【问题描述】:
我正在尝试获取环境变量的实际值。
这是我目前所拥有的:
string query = string.Format("Select VariableValue From Win32_Environment Where Name = '{0}'", variableName);
using (var searcher = new ManagementObjectSearcher(query))
using (ManagementObject result = searcher.Get().Cast<ManagementObject>().FirstOrDefault())
{
if (result != null)
return Convert.ToString(result["VariableValue"]);
}
这可行,但问题是:将 'windir' 作为名称传递 会得到 '%SystemRoot%' 作为值。我真正想要的是实际路径,即'C:\Windows'。
我尝试使用递归获取'SystemRoot'的值,但找不到匹配项。
如何确保返回真实值?
谢谢!
【问题讨论】:
-
为什么 %SystemRoot% 不可接受?如果你把它放在资源管理器窗口中,你会转到 windows 的安装目录。因为理论上 %SystemRoot% 可能是 D:\Windows\。
-
@Ramhound:我正在使用 Win32_Process.Create 在远程机器上编写一个运行命令的方法。 环境变量似乎没有被识别,所以我想自己替换它们。如果有办法自动识别它们,那也可以解决我的问题。
标签: c# .net windows wmi environment-variables