9

Citrixデスクトップ全体ではなく、特定の公開アプリケーション(exeにコンパイルされたマクロスケジューラマクロ)を起動するために、ICAファイルへのCMD行呼び出しを使用してC#Webアプリコードから単純な文字列パラメーターをCitrix XenAppサーバーに送信しようとしています。

コマンドラインコードを使用したWebアプリがあります

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

パラメータ構文も試しました:/username=SomebodysName, /Param:"/username=SomebodysName"

引用符とスラッシュのその他の組み合わせは約 100 万通りあります。

Citrix QuickLaunch を使用して ICA ファイルを作成しましたが、変更したのはInitialProgram=#ApplicationName \Param(\Param を追加した) だけでした。私も試してみましたが/username\Param=SomebodysNameそれらのいずれも機能させることができません。そこに名前をハードコーディングしようとしても、うまくいきません。

exe はパラメーター " username" を想定しており、cmd プロンプトからローカルで呼び出されると、.exe を使用して動作しUsernameProgram.exe /username=somebodysnameます。%*Citrix Xenapp アプリケーションの場所のプロパティの末尾に" " を含めてcommandlineexecutable、コマンド ライン パラメーターを確実に受け入れられるようにしました。

これはすべて C# と XenApp 6 を使用しています。パラメーターを渡す以外はすべて機能します。パラメーターがどこにあるのかさえわからないのです。/ と \ と " のすべての組み合わせを試したような気がするので、誰かが構文で私を助けてくれれば、本当に感謝しています! C# で ICA クライアント SDK を調べてみました。コードですが、外部のICAファイルが行うことを手動で行うようです.これが間違っている場合は、私に知らせてください.私は完全に.アイデアがありません。助けてください。

ありがとう!

4

1 に答える 1

6

次を使用して、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();

参考:C#でbatファイルを.exeと.defコードで実行

.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 の公開アプリケーションの Location プロパティの後に、二重引用符を含めて「%**」があることを確認することです。2 番目のアスタリスクを追加すると、パラメーターがコマンド ライン検証を通過し、アプリケーションを開いたときに使用できるようになると思います。いずれにせよ、それはそれらのうちの2つで機能し、1つでは機能しませんでした.

于 2012-01-17T20:29:58.737 に答える