如何為每次啟動啟用 procmon 啟動日誌記錄?

如何為每次啟動啟用 procmon 啟動日誌記錄?

我知道進程監視器具有“啟用啟動日誌記錄”功能。

但這僅在下次啟動時生效。

有沒有辦法為未來的每次啟動啟用啟動日誌記錄?

答案1

我不知道永久啟用啟動日誌記錄的常規方法,但啟動日誌記錄似乎是由Procmon驅動程式配置中的兩個註冊表值控制的。也許(重新)創建這些值(例如使用啟動腳本)將執行您想要的操作:

if not exist %SystemRoot%\System32\Drivers\PROCMON23.sys copy PROCMON23.sys %SystemRoot%\System32\Drivers\
reg add HKLM\SYSTEM\CurrentControlSet\services\PROCMON23 /v ImagePath /t REG_SZ /d "System32\Drivers\PROCMON23.sys" /f
reg add HKLM\SYSTEM\CurrentControlSet\services\PROCMON23 /v Start /t REG_DWORD /d 0x0 /f
reg add HKLM\SYSTEM\CurrentControlSet\services\PROCMON23 /v Type /t REG_DWORD /d 0x1 /f

然而,在嘗試類似的操作之前,我首先嘗試「常規」監控(沒有啟動日誌記錄)。啟動一次進程監視器並將其配置為僅監視對檔案的存取hosts過濾器 → 過濾器...)。將該配置匯出到文件C:\hosts.pmc(文件 → 匯出設定...)。然後在啟動腳本中運行類似以下內容:

procmon /LoadConfig C:\hosts.pmc /BackingFile C:\hosts_%DATE:/=-%.pml /Quiet > C:\hosts.log 2>&1

這將使用匯出的設定啟動程序監視器 ( /LoadConfig C:\hosts.pmc),開始監視而不提示確認過濾器設定 ( /Quiet),並將記錄的事件記錄到具有目前日期的日誌檔案 ( /BackingFile C:\hosts_%DATE:/=-%.pml)。此表達式%DATE:/=-%產生當前日期,其中正斜線/替換為連字號-。如果您的日期格式不是,MM/DD/YYYY您必須相應地修改此表達式。

啟動腳本可以透過多種方式進行設定(Run登錄中的鍵、排程任務、群組原則等)。看以下問題的答案這個問題在 StackOverflow 上查看概述。

答案2

Adam Collett/adjman666 寫了一個 vbscript 來完成此操作並將其發佈到 sysinternals 論壇。。為此,\server\procmon share 需要設定共用和檔案權限,以便「網域電腦」可以從該位置讀取數據,否則腳本將出現錯誤並顯示「存取被拒絕」訊息。

'Script to enable boot logging in Process Monitor at every shutdown to ensure we capture all activity, every time.

'Declare the objects used in the script
Dim objFSO, objShell, objRegistry

'Declare the variables used in the script
Dim strProcmon20KeyPath, strInstancesKeyPath, strPMIKeyPath, strStartValueName, strGroupValueName, strTypeValueName, strImagePathValueName
Dim strDefInstanceValueName, strAltitudeValueName, strFlagsValueName, strComputer

'Declare the constants used in the script
Const HKEY_LOCAL_MACHINE = &H80000002

'Create our FileSystem, Shell and Registry objects
Set objFSO=CreateObject("Scripting.FileSystemObject")
Set objShell=WScript.CreateObject("WScript.Shell")
strComputer = "."
Set objRegistry = GetObject("winmgmts:\\" & strComputer & "\root\default:StdRegProv")

'Set all variables ready for use

strProcmon20KeyPath = "SYSTEM\CurrentControlSet\Services\PROCMON20\"
strInstancesKeyPath = "SYSTEM\CurrentControlSet\Services\PROCMON20\Instances\"
strPMIKeyPath = "SYSTEM\CurrentControlSet\Services\PROCMON20\Instances\Process Monitor Instance\"

strStartValueName = "Start"
strGroupValueName = "Group"
strTypeValueName = "Type"
strImagePathValueName = "ImagePath"
strDefInstanceValueName = "DefaultInstance"
strAltitudeValueName = "Altitude"
strFlagsValueName = "Flags"

'Check for the Process Monitor Executable, copy it in if not already on the system.
If not objFSO.FileExists("C:\Windows\System32\procmon.exe") Then
  objFSO.CopyFile "\\server\procmon\procmon.exe", "C:\Windows\System32\", true
End If

'Now import the registry settings, one at a time
objShell.RegWrite "HKEY_LOCAL_MACHINE\" & strProcmon20KeyPath & strStartValueName, "0", "REG_DWORD"
objShell.RegWrite "HKEY_LOCAL_MACHINE\" & strProcmon20KeyPath & strGroupValueName, "FSFilter Activity Monitor", "REG_SZ"
objShell.RegWrite "HKEY_LOCAL_MACHINE\" & strProcmon20KeyPath & strTypeValueName, "1", "REG_DWORD"
objShell.RegWrite "HKEY_LOCAL_MACHINE\" & strProcmon20KeyPath & strImagePathValueName, "System32\Drivers\PROCMON20.SYS", "REG_EXPAND_SZ"

objShell.RegWrite "HKEY_LOCAL_MACHINE\" & strInstancesKeyPath & strDefInstanceValueName, "Process Monitor Instance", "REG_SZ"

objShell.RegWrite "HKEY_LOCAL_MACHINE\" & strPMIKeyPath & strAltitudeValueName, "385200", "REG_SZ"
objShell.RegWrite "HKEY_LOCAL_MACHINE\" & strPMIKeyPath & strFlagsValueName, "0", "REG_DWORD"

'Now copy over the PROCMON20.SYS file to the C:\Windows\System32\Drivers folder

If not objFSO.FileExists("C:\Windows\System32\Drivers\PROCMON20.SYS") Then
  objFSO.CopyFile "\\server\procmon\PROCMON20.SYS", "C:\Windows\System32\Drivers\", true
End If

'End of Script

相關內容