プロセスモニターに「ブートログの有効化」機能があることは知っています。
ただし、これは次回の起動時にのみ有効になります。
将来、すべての起動に対して起動ログを有効にする方法はありますか?
ブートログを永続的に有効にする通常の方法を知りませんが、ブートログは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
ただし、そのようなことを試す前に、まず「定期的な」監視(ブートログなし)を試します。 Process Monitorを1回起動し、hosts
ファイルへのアクセスのみを監視するように構成します(Filter→Filter ...)。その構成をファイル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の この質問 への回答を参照してください。
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