C#应用程序需要引用远程工作站在Citrix环境(C# application needs to r

2019-09-27 10:15发布

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

非常感谢提前。

Answer 1:

在思杰系统有所谓的环境变量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;
} 


文章来源: C# application needs to reference remote workstation in Citrix environment