仮想空間で ProcessMonitor を起動する方法について

システムセンターサポート APP-V 担当の山田です。
今回は Microsoft Application Virtualization (App-V) で仮想化したアプリケーションで発生した問題について、Process Monitor (ProcMon.exe) を利用してトラブルシュートを行う方法をご案内致します。

Process Monitor v3.03
https://technet.microsoft.com/en-us/sysinternals/bb896645

App-V で仮想化したアプリケーションについて、ファイルやアクセス権の不足によるエラーが発生する場合、
シーケンスしたパッケージ内部に、必要なファイルやレジストリが含まれていない可能性があります。

これらの不足しているファイルやレジストリを特定するためには、それらに対する処理の流れを追えば確認する事ができます。しかし、通常の Process Monitor を用いる方法では仮想アプリケーションの処理内容を追うことは出来ません。なぜなら、仮想化されたアプリケーションの処理はすべて仮想アプリケーション空間で実行されているため、通常のアプリケーションが処理されている物理空間からは処理が隠蔽されているためです。
仮想アプリケーション空間内で実行される処理を Process Monitor で追うためには、Process Monitor 自体も仮想アプリケーション空間内で実行する必要があります。そのための方法を、以下に紹介します。
手順の概要は以下のとおりです。

A. アプリケーションのショートカットを作成する。
B. ショートカットから、仮想アプリケーション空間でコマンドプロンプトを起動するように構成する。
C. コマンドプロンプトからプロセスモニタを起動する。

各手順の詳細は以下のとおりです。

=============
A. アプリケーションのショートカットを作成する
=============
最初に、トラブルシュートを行う仮想アプリケーションの名前を確認します。

1. ファイル名を指定して実行から、"Sftcmc.msc" を起動します。
2. Application Virtualization Client から「アプリケーション」をクリックします。
3.右ペインにて、確認したいアプリケーションを右クリックし、新しいショートカットを選択します。
4. ウィザード内の「手順 1」 にて、別途作成するショートカットの名前を入力し、次へをクリックします。
5. デスクトップにチェックボックスを入れます。
6. コマンドラインパラメーターとしては空白のまま、ウィザードに従ってショートカットを作成します。

=============
B. ショートカットから、仮想アプリケーション空間でコマンドプロンプトを起動するように構成する。
=============

1. A で作成したショートカットをデスクトップ上で選択し、右クリックしてプロパティを開きます。
2. リンク先を編集し、/exe cmd.exe という文字列を、SftTray.exe と /launch の間に入力します。

例としては、以下の通りです。

※変更前
C:\Program Files (x86)\Microsoft Application Virtualization Client\sfttray.exe" /launch "DefaultApp MFC Application 1.0.0.1

※変更後
C:\Program Files (x86)\Microsoft Application Virtualization Client\sfttray.exe" /exe cmd.exe /launch "DefaultApp MFC Application 1.0.0.1

3. 上記が変更が完了しましたら、OKで保存します。

=============
C. コマンドプロンプトからプロセスモニタを起動する。
=============
B にて作成したショートカットをダブルクリックする事で、コマンドプロンプトが開きます。このコマンドプロンプトは、当該仮想アプリケーションの仮想空間内で起動していますので、ProcMon.exe を起動するようフルパスを指定して実行する事で操作完了です。

このコマンドプロンプトから regedit.exe 等を指定して実行する事で、仮想環境内のレジストリを参照する事もできますので、お客様の状況に応じた利用をご検討ください。

 

 
これらの操作に関して、よくある質問と回答をまとめておきます。

-----
Q: /exe ProcMon.exe を直接ショートカットに指定してはいけないのでしょうか?
-----

A: 直接指定しても問題なく動作します。
しかし、同仮想空間で Process Monitor 以外のツールを起動したい場合等を考えると、コマンド プロンプトを利用する方法の方が汎用性があります。

-----
Q: SCCM 2007 を利用して仮想アプリケーションを配布しています。
この場合 VAppLauncher.exe が利用されているようなのですが、 /exe cmd.exe は利用できないようです。
どうしてでしょうか?
-----

A: VAppLauncher.exe が /exe のパラメーターに対応していないためです。
SCCM を利用して仮想アプリケーションを配布する際に、特定の端末のトラブルシュートを行いたい場合には、VAppLauncher.exe ではなく sfttray.exe を利用するようにショートカットを作成してください。

-----
Q: Process Monitor にて /externalcapture 引数を指定する必要はありますか?
-----

A: 今回ご案内した方法を利用した場合においては、特に引数を指定する必要はありません。

/externalcapture の引数を利用した場合、通常のエクスプローラから Process Monitor を起動した場合においても、仮想アプリケーション空間内部の処理を参照する事ができます。
情報採取を目的とした場合には、コマンドプロンプトを利用した方法よりも工数が少なくなるため、状況に応じてご利用ください。

以上、よろしくお願いいたします。