Citrixサポートブログ

  • トラブルシューティング
2021.04.26

公開アプリケーションの動作がおかしい場合に試して頂きたいCitrix API Hook 無効化

公開アプリケーションの動作がおかしい場合に試して頂きたいCitrix API Hook 無効化

今回は、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より古いバージョンで無効化する手順


1.Citrix API Hookの有効・無効の違い

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:プロセスがクラッシュする問題のトラブルシューティング方法


2.XenApp7.9 以降(Citrix Virtual Apps 7 含む)のバージョンにて無効化する手順

以下は、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を再起動してください。

3.XenApp7.9より古いバージョンで無効化する手順

以下は、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製品紹介セミナーも定期開催しています

クライアント仮想化の基礎知識から、仮想化製品「Citrix Virtual Apps and Desktops(XenAppおよび
XenDesktop)」の製品概要、導入検討時に注意すべき点などをご紹介します。
今お持ちのお悩みを解決し、Citrix製品をより有効に活用する方法を具体的に学ぶことができる内容になっております。




Citrixの設定・トラブル対処方法の良くあるFAQ10選プレゼント中

アシストのCitrixサポートセンターに良くある設定・トラブル対処方法のFAQ10選の資料を無料プレゼント中です。また、Citrix XenApp/XenDesktopの問題発生時に原因を切り分ける方法も掲載しております。以下のバナーからお気軽にダウンロードください。


筆者情報:川東健吾

アシストに入社し、テスト系製品のカスタマーサポートを担当後、現在はCitrix製品を担当しています。XenAppとXenDesktopのトラブルシューティングや運用に役立つ情報を、長年のサポート対応の視点で分かりやすくお伝えしていきます。
学生時代から続けている映像制作の趣味の延長で、Citrixトラブシューティング入門動画も制作しました。こちらからご視聴頂けます。

関連している記事

  • トラブルシューティング
2023.11.13

特定のクライアント端末で公開アプリケーションの起動が失敗する場合の問題切り分けの一例

特定のクライアント端末で公開アプリケーションが起動できない問題について弊社のCitrixヘルプデスクがよく案内している切り分け方法をご紹介します。

  • トラブルシューティング
2023.11.13

Workspace app for Windows をクリーンアンインストールする方法

クライアント端末にインストールしているWorkspace appにてReceiverCleanupUtility.exeがある場合は、こちらを使用してクリーンアンインストールができます。

  • トラブルシューティング
2023.08.25

Citrix ConfigSync Service の Event ID:505 に関する対処方法

今回は、CitrixデリバリーコントローラサーバのWindowsイベントログ(アプリケーションログ)に「Citrix ConfigSync Service の Event ID:505」が継続して記録される場合の対処方法をご紹介します。

Citrix Virtual Apps and Desktops(XenAppおよびXenDesktop)の製品概要セミナー Citrixの設定・トラブル対処方法の良くあるFAQ10選 Citrixサポートセンターのご紹介

ページの先頭へ戻る