我有一个C#独立的Windows窗体应用程序。 它连接到后台办公系统,需要工作站名称作为识别过程的一部分。 我使用Environment.MachineName得到这个。 但是使用此应用程序的客户偶尔会运行Citrix环境下,当他们这样做,他们希望它引用远程计算机的名称,而不是将其安装在机器。 我从来没有编码这样的事之前,和我不熟悉思杰(所以我开了一个快速启动)。 如何获取远程计算机的名称? 任何想法非常感激。
非常感谢提前。
我有一个C#独立的Windows窗体应用程序。 它连接到后台办公系统,需要工作站名称作为识别过程的一部分。 我使用Environment.MachineName得到这个。 但是使用此应用程序的客户偶尔会运行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;
}