command-line - 通过 ICA 文件从客户端 CMD 传递参数以启动已发布的 Citrix 应用程序

标签 command-line parameters citrix xenapp

我正在尝试使用对 ICA 文件的 CMD 行调用将一个简单的字符串参数从 C# Web 应用程序代码发送到 Citrix XenApp 服务器以启动特定的已发布应用程序(宏调度程序宏编译成 exe),而不是整个 citrix 桌面。

我有一个带有 cmd 行代码的网络应用程序,使用

"C:\Program Files (x86)\Citrix\ICA Client\Wfica32.exe"  C:\someICAfile.ica \Param:"/username=SomebodysName" .

我也试过参数语法:/username=SomebodysName, /Param:"/username=SomebodysName"
以及大约一百万个其他引号和斜线组合。

我使用 Citrix QuickLaunch 编写我的 ICA 文件,其中我唯一更改的是 InitialProgram=#ApplicationName \Param (我添加了\Param)。我也试过/username\Param=SomebodysName我也无法让其中任何一个工作。我什至尝试在其中硬编码名称,但我无法让它通过。

该 exe 需要一个参数“username”,当从 cmd 提示符本地调用时,它使用 UsernameProgram.exe /username=somebodysname 工作。 .我确保在 %* 末尾包含“commandlineexecutable”在 Citrix Xenapp 应用程序位置属性中,以确保它可以接受命令行参数。

这一切都使用 C# 和 XenApp 6。除了传递参数外,一切正常,我不知道参数丢失在哪里,如果它甚至到达任何地方。
我觉得我已经尝试过/'s\'s 和 "'s 的每一种组合,所以如果有人可以帮我解决语法问题,我将非常感激!我确实尝试在 c# 中查看 ICA Client SDK代码,但它似乎只是手动执行外部 ICA 文件将执行的操作。但是,如果这是错误的,请告诉我。我正在接近我将尝试它的地步,因为我完全没有想法。请帮忙。

谢谢!

最佳答案

我最终使用以下命令从我的 C# 代码中调用了一个 .bat 文件:

Process proc_Launch = new Process();
proc_Launch.StartInfo.FileName = "CreateTempICA.bat";
proc_Launch.StartInfo.RedirectStandardError = false;
proc_Launch.StartInfo.RedirectStandardOutput = false;
proc_Launch.StartInfo.WorkingDirectory = @"C:\WorkingDirectory";
proc_Launch.StartInfo.Arguments = @"""/username=somebodysname""";
proc_Launch.Start();

引用:Run bat file in c# with .exe and .def code

在 .bat 文件中,我创建了一个传入用户名参数的 ICA 文件,如下所示:
@echo off
:makefile
pushd %temp%
set icafile=temp.ica
@echo [WFClient] > %icafile%
@echo Version = 2 >> %icafile%
@echo HttpBrowserAddress=ServerName:8080 >> %icafile%
@echo ProxyType=Auto >> %icafile%
@echo ConnectionBar=0 >> %icafile%
@echo [ApplicationServers] >> %icafile%
@echo ApplicationName= >> %icafile%
@echo [ApplicationName] >> %icafile%
@echo Address = ApplicationName >> %icafile%
@echo InitialProgram=#"ApplicationName"%1 >> %icafile%
@echo ClientAudio=On >> %icafile%
@echo AudioBandwidthLimit=1 >> %icafile%
@echo CGPAddress=*:#### (use actual numbers here though) >> %icafile%
@echo CDMAllowed=On >> %icafile%
@echo CPMAllowed=On >> %icafile%
@echo DesiredColor=8 >> %icafile%
@echo ConnectionBar=0 >> %icafile%
@echo TWIMode=On >> %icafile%
@echo Compress=On >> %icafile%
@echo TransportDriver=TCP/IP >> %icafile%
@echo WinStationDriver=ICA 3.0 >> %icafile%
@echo BrowserProtocol=HTTPonTCP >> %icafile%
@echo [Compress] >> %icafile%
@echo DriverName= PDCOMP.DLL >> %icafile%
@echo DriverNameWin16= PDCOMPW.DLL >> %icafile%
@echo DriverNameWin32= PDCOMPN.DLL >> %icafile%
start %icafile%
popd

InitialProgram 组件中的 %1 是在 C# 代码中使用参数的位置。

引用:http://www.virtualizationadmin.com/files/whitepapers/MetaframeXP/Connecting_to_a_Citrix_server_from_the_command_line.htm

最后一步是确保在您的 Citrix Delivery Console 中确保 CommandLineExecutable 的已发布应用程序的位置属性后面有一个“%**”,包括双引号。我相信添加第二个星号可以让参数通过命令行验证并允许在打开应用程序时使用它。不管怎样,它与其中两个一起工作,而不是与其中一个一起工作。

关于command-line - 通过 ICA 文件从客户端 CMD 传递参数以启动已发布的 Citrix 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8854616/

相关文章:

python - 如何使用 python 的交互式输入运行命令行程序?

url - 有人可以告诉我如何为带有参数的网址创建二维码吗

Tomcat 6 不将 + 解码为参数值中的空格

python - 适用于 Netscaler 的 Citrix Nitro API - 启用和禁用服务组中的服务器节点

virtualization - 程序如何检测到它正在 Citrix 上运行?

java - 手动编译android应用程序的麻烦

javascript - casperjs exit()/die() 不返回当前目录

http - 在服务器上创建文件的 CURL 命令

c++ - 正确使用 Eigen::Ref<> 类

在桌面虚拟化 Citrix 中时无法运行已编译的 C 程序