web-dev-qa-db-ja.com

起動ごとにprocmonブートログを有効にする方法は?

プロセスモニターに「ブートログの有効化」機能があることは知っています。

ただし、これは次回の起動時にのみ有効になります。

将来、すべての起動に対して起動ログを有​​効にする方法はありますか?

2
David Dai

ブートログを永続的に有効にする通常の方法を知りませんが、ブートログは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の この質問 への回答を参照してください。

2
Ansgar Wiechers

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
1
Justin Dearing