我正在开发一个信息亭应用程序,它为用户提供了 Citrix 连接的选择。
其想法是,用户选择 kiosk 应用程序提供的连接,然后 kiosk 启动程序通过运行类似于以下内容的命令来启动所选连接:
C:\Program Files\Citrix\ICA Client\wfica32.exe \\server\path\to\icaFile.ica
我希望用户留在 Citrix 会话中 - 不是出于任何安全原因,只是为了让用户在访问所选会话并最终注销时获得良好的体验。因此,我启动了一个全屏会话,一切都很好,直到用户注销。
当用户注销 Citrix 会话时,我还想在客户端计算机上启动注销。我尝试使用类似于以下的代码以明显的方式执行此操作:
Process citrixProcess = new Process();
citrixProcess.StartInfo = new ProcessStartInfo();
citrixProcess.StartInfo.FileName = "C:\Program Files\Citrix\ICA Client\wfica32.exe";
citrixProcess.StartInfo.Arguments = "\\server\path\to\icaFile.ica";
citrixProcess.Start();
citrixProcess.WaitForExit();
//
// Followed by code to initiate logoff from the local computer
//
但代码并没有等待 Process 对象,而是直接继续到启动注销的下一部分。结果是 Citrix 会话几乎立即终止,因为本地计算机注销立即发生。我最好的猜测是,wfica32.exe 的初始启动在启动新进程来实际处理会话后立即退出。但是,如果发生这种情况,则不清楚如何处理,因为启动 Citrix 会话后 wfica32.exe 似乎仍在运行。
我正在寻找一种可靠的方法来检测以这种方式启动的 Citrix 会话何时终止。
在 C# 应用程序中,您可以引用 WFICALib.dll(在 Citrix Ica Client 文件夹中),创建 ICAClientClass 对象,订阅并调用其 Disconnect 事件,然后调用 LoadIcaFile 方法来启动连接。
在 Disconnect 方法的处理程序中,您需要添加代码来启动注销并终止当前应用程序。
一个示例实现:
public static void Connect()
{
// Configure the connection.
ICAClientClass ica = new ICAClientClass();
ica.Application = string.Empty;
ica.InitialProgram = "#Name of Citrix application to launch";
ica.Launch = true;
ica.Domain = Environment.UserDomainName;
ica.DesiredColor = ICAColorDepth.Color24Bit;
ica.OutputMode = OutputMode.OutputModeNormal;
ica.MaximizeWindow();
ica.ClientAudio = true;
ica.AudioBandwidthLimit = ICASoundQuality.SoundQualityMedium;
ica.Compress = true;
ica.ScreenPercent = 100;
ica.TransportDriver = "TCP/IP";
ica.WinstationDriver = "ICA 3.0";
ica.SSLEnable = false;
ica.SSLCiphers = "ALL";
ica.SSLProxyHost = "*:443";
ica.EncryptionLevelSession = "EncRC5-128";
// Citrix server name or IP
ica.Address = "x.x.x.x";
// Setup handler for disconnect event.
ica.OnDisconnect += ica_OnDisconnect;
// Initiate the connection.
ica.Connect();
}
private static void ica_OnDisconnect()
{
Console.WriteLine("ica_OnDisconnect");
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)