Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/reporting-services/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Command line 通过ICA文件从客户端CMD传递参数以启动已发布的Citrix应用程序_Command Line_Parameters_Citrix_Xenapp - Fatal编程技术网

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

Command line 通过ICA文件从客户端CMD传递参数以启动已发布的Citrix应用程序,command-line,parameters,citrix,xenapp,Command Line,Parameters,Citrix,Xenapp,我试图使用对ICA文件的CMD行调用从C#web应用程序代码向Citrix XenApp服务器发送一个简单的字符串参数,以启动一个特定的发布应用程序(宏调度程序宏编译为exe),而不是整个Citrix桌面 我有一个使用cmd行代码的web应用程序 "C:\Program Files (x86)\Citrix\ICA Client\Wfica32.exe" C:\someICAfile.ica \Param:"/username=SomebodysName" . 我还尝试了参数语法:/user

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

我有一个使用cmd行代码的web应用程序

"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
工作。我确保在Citrix Xenapp应用程序位置属性中的
命令行可执行文件
末尾包含“
%*
”,以确保它可以接受命令行参数

这都是使用C#和XenApp 6实现的。除了传递参数外,其他一切都正常工作,我不知道参数在哪里丢失了,即使它到达了任何地方。 我觉得我已经尝试了/和的每一种组合如果有人能帮我解决语法问题,我会非常感激!我确实尝试过在c代码中查看ICA客户机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();
参考:

在.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#代码中使用参数的位置

参考:


最后一步是在Citrix交付控制台中确保CommandLineExecutable的已发布应用程序的位置属性后面有“%**”,包括双引号。我相信添加第二个星号可以让参数通过命令行验证,并允许在打开应用程序时使用它。不过,无论哪种方式,它都可以处理其中两个,而不能处理其中一个。

将静态参数从ICA文件传递到已发布的Citrix应用程序:InitialProgram=#“ApplicationName”“/faveColor=yellow”。在Citrix Delivery Services控制台的应用程序属性中,我将Location属性中的commandlineexecutable更改为C:\filePath\ApplicationName.exe“%**”。我相信这两个*绕过了命令行验证。无论哪种方式,都可以将参数传递到我的应用程序,就像我在本地从命令行调用应用程序一样。现在我只需要弄清楚如何将参数输入ICA,世界上的一切都会恢复正常。