天天看點

App-V 參考工具之(三):如何在Client端使用FileMon和RegMon

今天分享一下FileMon和RegMon如何在App-V client端使用,假如有哪裡說得不對,請大家指正,謝謝.

FileMon和RegMon是來做workstation的排錯有用的工具,有時候我們會用它們來進行排錯,但是你可能會發現, FileMon和RegMon在App-V client端用不了,它不能對App-V client的client端的Q盤進行捕獲,會出現以下的錯誤. (下面以Filemon為例子,你可以為 RegMon 中使用相同的步驟)

App-V 參考工具之(三):如何在Client端使用FileMon和RegMon
App-V 參考工具之(三):如何在Client端使用FileMon和RegMon

那麼,怎樣才能讓FileMon捕捉到Q盤的資料進行應用程式的排錯呢,我們可以這樣做

1. 在Server端,我們以DefaultApp為例, 我們打開DefaultApp.osd, 在<dependency> 标記之後添加以下行,儲存退出

<SCRIPT TIMEOUT="0" TIMING="PRE" EVENT="LAUNCH" WAIT="TRUE" PROTECT="TRUE">

<SCRIPTBODY>%systemroot%\system32\cmd.exe</SCRIPTBODY>

</SCRIPT>

解釋:

TIMING="PRE"和EVENT="LAUNCH"暗示這個script在你要啟動的應用程式啟動前執行

WAIT="TRUE"必須等待這個script執行完成才會嘗試啟動會讓應用程式啟動,這樣就可以更好地捕捉到啟動的全過程,友善排錯

TIMEOUT="0" 指這個script不會timeout,一直運作,給你足夠的時間進行排錯

PROTECT="TRUE" 提供了進入虛拟環境的權限。假如PROTECT="FALSE",就不能進入Q盤或者虛拟系統資料庫,那系統資料庫的任何改變都有可能影響到實際的作業系統

2. 在Client端,當DefaultApp啟動時,首先會先啟動指令行,這時我們定位到filemon.exe的位置(如本例中的C:\ filemon.exe)将其啟動

App-V 參考工具之(三):如何在Client端使用FileMon和RegMon

3. 你可能會收到以下報錯, 系統找不到檔案. 原因是 FileMon 和 RegMon可執行檔案中使用嵌入的服務, 而本地服務控制管理器(Services.exe) 無法通路虛拟環境,是以FileMon 和 RegMon 工具在不會啟動。

App-V 參考工具之(三):如何在Client端使用FileMon和RegMon

4. 我們去C:\system32\drivers确認一下FileMon的sys檔案的具體檔案名是filem701.sys還是filem.sys,因版本不同這裡可能有所差別  

App-V 參考工具之(三):如何在Client端使用FileMon和RegMon

5. 使用記事本編輯一個檔案,添加以下的文本接着建立儲存為 *. reg (*為你命名檔案名的名字)檔案導入到App-V client端的系統資料庫中,這次FileMon就可以找到檔案了 (假如剛才你檢查到本機裝的filemon使用的是filem.sys,請将以下的701三個字母删去)

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Filemon701]

"Type"=dword:00000001

"ErrorControl"=dword:00000001

"Start"=dword:00000003

"ImagePath"="\\??\\c:\\windows\\system32\\drivers\\filem701.sys"

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Regmon701]

"ImagePath"=[url=file://\\??\\c:\\windows\\system32\\drivers\\regsys701.sys]\\??\\c:\\windows\\system32\\drivers\\regsys701.sys[/url]

6. 我們重新關閉Default App啟動一次, 重複第二步操作, 這是不會報錯說系統找不到檔案了,這次我們可以成功捕獲到Q盤的資訊

App-V 參考工具之(三):如何在Client端使用FileMon和RegMon
App-V 參考工具之(三):如何在Client端使用FileMon和RegMon

繼續閱讀