2012年11月2日金曜日

ThinApp 仮想環境で動作しているプロセスを確認する方法

ThinApp 仮想環境で動作しているプロセスを確認する方法

ThinAppでアプリを仮想化していると、タスクマネージャーに
複数のプロセス(EXE)が起動していることに気がつくことがあると思います。

こんな感じです。
Mozilla Firefox + Java6を仮想化しています。

赤枠で囲った3つのプロセスがThinAppの仮想環境上で動作しています。
タスクマネージャーからは、判断が難しいです。
java.exe 4400
Mozilla Firefox.exe 7192
Mozilla Firefox.exe 9040 



そんな時は、仮想レジストリを参照すればOKです。
エントリーポイントとしてvRegedit.exeを作成します。
Package.iniファイルを編集します。

例)こんな感じです。
[vRegedit.exe]
Source=%SystemRoot%\regedit.exe
Shortcut=Mozilla Firefox.exe
Disabled=0

編集後にbuild.batを実行します。
vRegedit.exeがbinフォルダに作成されます。


vRetedit.exeを起動します。
実は、ThinAppの仮想環境上で動作している、プロセスは、
仮想レジストリの以下のキーにPIDとEXEのフルパスが登録されています。
「HKEY_LOCAL_MACHINE\SOFTWARE\Thinstall\ProcessList」


名前の部分がPID(プロセスID)でデータ部分が仮想環境でのEXEファイルのフルパスになります。
4400 C:\Program Files (x86)\Java\jre6\bin\java.exe
7192 C:\PROGRA~2\Java\jre6\bin\jp2launcher.exe
9040 C:\Program Files (x86)\Mozilla Firefox\firefox.exe

PIDをもとに、タスクマネージャーと照らし合わせる事で、仮想環境で実行しているプロセスを
確認することができます。

PID
物理環境のプロセス名
仮想環境でのプロセス名
4400
java.exe
C:\Program Files (x86)\Java\jre6\bin\java.exe
7192
Mozilla Firefox.exe
C:\PROGRA~2\Java\jre6\bin\jp2launcher.exe
9040
Mozilla Firefox.exe
C:\Program Files (x86)\Mozilla Firefox\firefox.exe

参考:
「One more method of finding out what processes are running within the virtual environment.」
http://blogs.vmware.com/thinapp/2012/09/one-more-method-of-finding-out-what-processes-are-running-within-the-virtual-environment.html