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