1

我有一个 C# 独立的 Windows 窗体应用程序。它连接到需要工作站名称作为识别过程一部分的后台系统。我正在使用 Environment.MachineName 来获取它。但是,使用此应用程序的客户偶尔会在 Citrix 环境下运行它,并且当他们这样做时,他们希望它引用远程机器名称,而不是安装它的机器。我以前从未编写过这样的代码,并且对 Citrix 不熟悉(所以我开始飞速发展)。如何获取远程机器名称?任何想法都非常感谢。

提前非常感谢。

4

1 回答 1

5

在 Citrix 系统上,有一个名为的环境变量CLIENTNAME,其中包含用户连接到 Citrix 的机器的名称。它只是一个常规的 Windows 环境变量,因此您可以使用Environment.GetEnvironmentVariable它来读取它。

你可以像这样快速而肮脏地做一些事情:

var workstationName = Environment.GetEnvironmentVariable("CLIENTNAME") ?? Environment.MachineName;

对于更健壮的东西,Citrix 环境还具有SESSIONNAME标识 Citrix 会话的变量。这两个变量一起存在可能是在 Citrix 会话中运行的更好测试。

所以你可以做这样的事情:

public bool IsCitrixSession() {
    return Environment.GetEnvironmentVariable("CLIENTNAME") != null
        && Environment.GetEnvironmentVariable("SESSIONNAME") != null;
}

public string GetWorkstationName()
{
    return IsCitrixSession() ? Environment.GetEnvironmentVariable("CLIENTNAME")
                             : Environment.MachineName;
} 
于 2013-01-10T03:14:54.433 回答