通常在Windows中,系统级环境变量由具有相同名称的用户级环境变量取代。但是,PATH环境变量是一种特殊情况。用户级PATH环境变量附加到系统级环境变量的末尾。
我使用以下C#代码来获取进程级环境变量值,并考虑了这种特殊情况。请注意,我无法使用EnvironmentVariableTarget.Process选项,因为这不会考虑自应用程序开始运行以来的任何更改。
public static Dictionary<string, string> GetEnvironmentVariables()
{
var environmentVariables = new Dictionary<string, string>();
//get machine environment variables
IDictionary machineEnvironmentVariables = Environment.GetEnvironmentVariables(EnvironmentVariableTarget.Machine);
foreach (DictionaryEntry envVar in machineEnvironmentVariables)
{
string key = envVar.Key.ToString()
environmentVariables[key] = envVar.Value.ToString();
}
//overwrite with any user environment variables
IDictionary userEnvironmentVariables = Environment.GetEnvironmentVariables(EnvironmentVariableTarget.User);
foreach (DictionaryEntry envVar in userEnvironmentVariables)
{
string key = envVar.Key.ToString();
if (key.ToLower() == "path" && environmentVariables.ContainsKey(key))
environmentVariables[key] += envVar.Value.ToString();
else
environmentVariables[key] = envVar.Value.ToString();
}
return environmentVariables;
}
我的问题是:是否还有其他需要考虑的特殊情况?请提供备份答案的文档链接。