
プロセス モニターには「ブート ログを有効にする」機能があることは知っています。
ただし、これは次回の起動時にのみ有効になります。
将来、すべてのブートでブート ログを有効にする方法はありますか?
答え1
ブート ログを永続的に有効にする一般的な方法は知りませんが、ブート ログはProcmon
ドライバー構成の 2 つのレジストリ値によって制御されているようです。おそらく、これらの値を (再) 作成する (たとえば、スタートアップ スクリプトを使用して) と、必要な処理が実行されるでしょう。
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
これにより、エクスポートされた構成で Process Monitor が起動し ( /LoadConfig C:\hosts.pmc
)、フィルター設定の確認を求めるプロンプトなしで監視が開始され/Quiet
、記録されたイベントが現在の日付でログ ファイルに記録されます ( /BackingFile C:\hosts_%DATE:/=-%.pml
)。 この式は、スラッシュをハイフンに置き換えた%DATE:/=-%
現在の日付を生成します。日付形式がこれと異なる場合は、この式をそれに応じて変更する必要があります。/
-
MM/DD/YYYY
Run
スタートアップスクリプトは、さまざまな方法(レジストリのキー、スケジュールされたタスク、グループポリシーなど)で構成できます。この質問概要については、StackOverflow をご覧ください。
答え2
Adam Collett/adjman666 は、これを実行するための VBScript を作成し、sysinternals フォーラムに投稿しました。これを機能させるには、\server\procmon 共有に共有とファイルのアクセス許可を設定し、「ドメイン コンピューター」がその場所から読み取ることができるようにする必要があります。そうしないと、スクリプトは「アクセスが拒否されました」というメッセージでエラーになります。
'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