- トラブルシューティング
CitrixDirectorを使用したセッション起動遅延調査の一例
ユーザー様のCitrixのセッション起動に時間がかかる場合にCitrix Directorを使用して問題切り分けする方法をご紹介させていただきます。
|
今回は、Citrix API Hook無効化の手順をご紹介します。以下の<例>の問題が発生する場合に、ご紹介する手順を実施することで改善できる場合があります。
※Citrix Virtual Desktopsの仮想デスクトップにも適用できる内容です。
<例>
Citrix Virtual Apps and Desktops(XenApp and XenDesktop)をインストールした環境で以下の問題が発生する
・アプリケーションのプロセスが起動できない
・アプリケーション利用中にクラッシュする
・アプリケーションの動作が不安定になる
Citrix Virtual Apps and Desktops(XenApp and XenDesktop)のVirtual Delivery Agentをインストールすると、以下の画面のようにインストールしたマシン上で起動するプロセスに対してCitrix API Hook DLLが読み込まれるようになります。
こちらの画面ショットは、notepad.exe を起動しています。
|
上記の例のような問題が発生する場合、こちらのCitrix API Hook が影響している可能性もあります。
本記事でご紹介している方法を使用することで、管理者側で指定したプロセスに対して、Citrix API Hook無効化ができます。
無効化することで、Virtual Delivery Agentをインストールする前と同等の状態でプロセス起動ができるようになるため、Citrix API Hookが起因して発生している問題かどうかの切り分けができます。
公開済みの記事をカテゴリ別に一覧したページを作成しました。公開されている記事を探す際のご参考にして頂けますと幸いです。
【Citrixサポートブログ】カテゴリ別の記事一覧
1.Citrix API Hookの有効・無効の違い
2.XenApp7.9 以降(Citrix Virtual Apps 7 含む)のバージョンにて無効化する手順
3.XenApp7.9より古いバージョンで無効化する手順
Citrix Virtual Apps(XenApp)は、公開アプリケーションを利用するユーザが、ローカル端末上でアプリケーションを使用している場合と同様の操作ができるように、Citrix API Hookと呼ばれるDLLファイルを使用しています。
以下のような処理が可能になります。
・公開アプリケーションのNotepadのデータを保存する際に、ファイル保存ダイアログに表示されているデスクトップをクリックすると、クライアント端末上のデスクトップにダイレクトに保存できる
・スマートカード認証を公開アプリケーションのセッション上でも利用ができる
Citrix API Hook が無効の場合は、上記の処理ができません。
ここからは、Process Explorerを使用して、Citrix API Hook DLLが有効と無効でどのように異なるかを確認したいと思います。
以下は、Citrix Virtual Delivery Agentをインストールしたマシン上でNotepadを起動しています。
<Citrix API Hookがnotepad.exe に対して有効の状態>
Citrix API Hook 関連のDLLが使用されています。
|
<Citrix API Hookが notepad.exe に対して無効の状態>
無効化した場合は、Citrix API Hook 関連のDLLは表示されていません。
|
【参考情報】
CTX107825:How to Disable Citrix API Hooks on a Per-application Basis
CTX221177:How to verify if Citrix hooks are loaded in a process
CTX234046:プロセスがクラッシュする問題のトラブルシューティング方法
以下は、notepad.exe に対して、Citrix API Hook DLLの読み込みを無効化する手順になります。業務アプリケーションで動作確認する場合は、notepad.exe を、該当のプロセス名に置き換えてください。
Citrix Virtual Delivery Agentのマシンにて以下のレジストリを設定します。
複数マシンがある場合は、それぞれで設定してください。
【手順】
1.レジストリエディタを開きます。
2.HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\CtxUvi のキーを開きます。
|
3.「UviProcessExcludes」上で右クリック後、「修正」をクリックします。
|
4.値の末尾に対象のプロセス名(以下の画面はnotepad.exe)をセミコロン区切りで登録後、「OK」をクリックします。既に登録済みの値は削除しないようにお願いします。
|
【注意点】
・プロセス名が .exe を含んで14文字を超える場合は、14文字に収まるようにしてください。例えば、badlongname.exeのように15文字になる場合は、badlongname.ex のように14文字にしてください。
・ワイルドカードは使用できません。
・セミコロンで区切ります
・設定を反映させるためにOS再起動が必要です
※ご参考:CTX107825: How to Disable Citrix API Hooks on a Per-application Basis
5.OSを再起動します。
6.他のVDAのマシンも同様の手順にて設定してください。
※設定をもとに戻す場合は、手順4で登録した値を削除してOSを再起動してください。
以下は、notepad.exe を公開アプリケーションとして起動する場合に、Citrix API Hook DLLの読み込みを無効化する手順になります。検証環境で動作確認する場合の参考にしてください。
XenApp 7.9よりも古いバージョンは、mfaphook.dllとradeaphook.dllおよびctxsbxhook.dll(およびそれらの64ビット版)は無効化できません。
Virtual Delivery Agentのマシンにて以下のレジストリを設定します。
複数マシンがある場合は、それぞれで設定してください。
【手順】
1.レジストリエディタを開きます。
2.HKEY_LOCAL_MACHINE\SOFTWARE\Citrix\CtxHookのキーを開きます。
|
3.右クリック後、「新規」ー「文字列」をクリックします。
|
4.以下の値を追加します。
名前 :ExcludedImageNames
種類 :REG_SZ
データ:notepad.exe
|
5.HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Citrix\CtxHookのキーを開きます。
|
6.右クリック後、「新規」ー「文字列」をクリックします。
|
7.以下の値を追加します。
名前 :ExcludedImageNames
種類 :REG_SZ
データ:notepad.exe
|
8.他のVDAのマシンも同様の手順にて設定してください。
※設定が反映されない場合は、VDAマシンのOSを再起動してください。
※設定をもとに戻す場合は、手順4と7で登録した値を削除してください。
いかがでしたしょうか。Citrix API Hook の無効化の対応がトラブルシューティングの参考になると幸いです。
クライアント仮想化の基礎知識から、仮想化製品「Citrix Virtual Apps and Desktops(XenAppおよび
XenDesktop)」の製品概要、導入検討時に注意すべき点などをご紹介します。
今お持ちのお悩みを解決し、Citrix製品をより有効に活用する方法を具体的に学ぶことができる内容になっております。
アシストのCitrixサポートセンターに良くある設定・トラブル対処方法のFAQ10選の資料を無料プレゼント中です。また、Citrix XenApp/XenDesktopの問題発生時に原因を切り分ける方法も掲載しております。以下のバナーからお気軽にダウンロードください。
ユーザー様のCitrixのセッション起動に時間がかかる場合にCitrix Directorを使用して問題切り分けする方法をご紹介させていただきます。
Citrix Receiver Diagnostics Toolを使用した資料採取手順の一例をご紹介します。
特定のクライアント端末で公開アプリケーションが起動できない問題について弊社のCitrixヘルプデスクがよく案内している切り分け方法をご紹介します。