Environment.GetEnvironmentVariable表现得很奇怪

时间:2014-09-11 16:47:16

标签: c# .net environment-variables

在我的控制台应用程序中,我尝试读取应用程序环境,无论应用程序是在本地计算机还是在RDP或Citrix环境中运行...我发现的很奇怪!!!

当我直接从VS 2010运行应用程序时 Environment.GetEnvironmentVariable 总是返回" null "但当我运行" Application.exe "它从 bin / release 文件夹中运行正常,我得到的值为Console / RDP / Citrix。

任何想法为什么通过VS运行它没有加载变量。

我正在尝试阅读" SessionName "。

1 个答案:

答案 0 :(得分:0)

如果您启用了UAC,并以管理员身份运行程序,以便系统提示您提升权限,则可能会看到此效果(没有SESSIONNAME环境变量)。

您可以通过在两个命令提示下比较以下命令的输出来看到这一点,一个正常,一个"以管理员身份运行":

SET S

这显示了从S开始的所有环境变量,因此您可以很容易地看到"以管理员身份运行时缺少SESSIONNAME"命令提示符。

因此,我认为您已从启用UAC的帐户以管理员身份运行Visual Studio。 Visual Studio然后接收这组更改的环境变量,因此SESSIONNAME将在您找到时为null。然后,当您独立于Visual Studio运行exe时,您没有说"以管理员身份运行",因此存在SESSIONNAME变量。