Citrix On-Line Pluginが起動しない場合のトラブルシューティングしたった
シトリックス炎の掲示板 Citrix(MetaFrame)
BBS公開アプリケーションが起動しない(エラーも出ない)
この掲示板にある症状で悩んだ
通常、WebPluginでアプリケーションをクリックすると、.ica ファイルがダウンロードされ、wfica32.exe に制御が映るのだが、エラーも出ず何も起こらないのだ。
ただし、まっさらのPCの場合、ライセンス契約の同意のダイアログだけが出る。
.ica をぶっ壊してみたりすると、エラーになるので、ちゃんと読んでるのは分かる。
Debug View などで見ると OutputDebugString の内容が見れるよって、公式サイトに書いてるけど、何も出ない。
1. ログの記録を有効にしてみる
HKEY_CURRENT_USER\Software\Citrix\ICA Client\Engine\Configuration\Advanced\Modules\Logging
この配下にあるレジストリを有効にする
false -> true にして LogFile に REG_SZ(ASCII) で ログファイルのフルパスを指定する。
ファイルは存在しなくてもいいけど、フォルダは予め作っておかないとエラーになる。
ICA Client connection initialised ICA Client connection initialised ICA Client connection initialised ICA Client connection initialised ICA Client connection initialised ICA Client connection initialised ICA Client connection initialised ICA Client connection initialised ICA Client connection initialised ICA Client connection initialised ICA Client connection initialised ICA Client connection initialised ICA Client connection initialised ICA Client connection initialised ICA Client connection initialised ICA Client connection initialised ICA Client connection initialised |
10回くらい試して、何も起動しないのでログ見たら、これだけ記録されていた ・ω・ だめじゃん…。
2. バイナリをデバッガでトレースしてみた
L00426ABD: call SUB_L0045BCF0 <- ここで、 -1 が返って来て異常終了 mov esi,eax cmp esi,ebx jz L00426AF9 call jmp_ctxlogging.dll!ICAClientError_getThreadErrorMessage mov edi,eax cmp edi,ebx jz L00426AE0 push esi push edi call jmp_ctxlogging.dll!ICAClientError_display push edi call jmp_ctxlogging.dll!ICAClientError_destroy L00426AE0: xor eax,eax pop edi pop esi pop ebx mov ecx,[esp+000005A8h] xor ecx,esp call SUB_L0042A175 mov esp,ebp pop ebp retn 0010h |
更に掘ってみた
L0045BD7C: mov ecx,[L00597B30] push ecx push L00597B34 call jmp_confmgr.dll!ConfigurationManager_new <- ここで、アクセスエラーが返って来て失敗 mov esi,eax cmp esi,edi jz L0045BDB3 mov edx,[L00597B30] push edx call jmp_icafile.dll!ICAFile_destroy mov eax,esi pop esi mov [L00597B30],edi mov [L00597B34],edi pop edi pop ebx retn 0010h |
というわけで、confmgr.dll を掘ってみた
L1000C0BE: cmp dword ptr [esi+38h],00000000h jz L1000C13B cmp dword ptr [esi+34h],00000000h jz L1000C13B cmp dword ptr [esi+30h],00000000h jz L1000C13B test byte ptr [edi+40h],04h jz L1000C0E7 push 00000003h push SWC1000F24C_All_Regions push esi call SUB_L1000B940 test eax,eax jnz L1000C12C L1000C0E7: test byte ptr [edi+40h],08h jz L1000C0FE push 00000004h push SWC1000F24C_All_Regions push esi call SUB_L1000B940 test eax,eax jnz L1000C12C L1000C0FE: test byte ptr [edi+40h],02h jz L1000C115 push 00000000h push SWC1000F24C_All_Regions push esi call SUB_L1000B940 test eax,eax jnz L1000C12C L100 0C115: test byte ptr [edi+40h],01h jz L1000C134 push 00000001h push SWC1000F24C_All_Regions push esi call SUB_L1000B940 test eax,eax jz L1000C134 L1000C12C: push esi call SUB_L1000B3C0 xor esi,esi L1000C134: |
どうも、関連レジストリツリーの読み込みに一つでも失敗するとエラー返すっぽい
正常系のツリー見たら、異常系のツリーにないレジストリーツリーがあった
w
ちなみに、Citrix Client 10.x から 14.x までは同じ影響を受けるのを確認 ・ω・
これは、 wfica32.exe /setup では解決しない。
Comments