2017-02-14 15 views
0

プロセスは、VBSでcalc.exeを起動する例の下で、WMI COMを使用して生成できます。親はWscript.exeではなくWMI COMサーバーであるWmiPrvSE.exeです。タスクは、プロセス作成の要求の下にフックすることです。WMIを使用して作成されたプロセスのソースおよび宛先PIDを取得する方法は?

str = "calc.exe" 
Set objWMIService = GetObject("winmgmts:\\.\root\cimv2") 
Set objStartup = objWMIService.Get("Win32_ProcessStartup") 
Set objConfig = objStartup.SpawnInstance_ 
Set objProcess = GetObject("winmgmts:\\.\root\cimv2:Win32_Process") 
objProcess.Create str, Null, objConfig, intProcessID 

非同期プロセスの作成使用してWMIを使用して監視することができるクエリ:

"SELECT * FROM MSFT_WmiProvider_ExecMethodAsyncEvent_Post WHERE ObjectPath=\"Win32_Process\" AND MethodName=\"Create\""; 

イベントは上記のVBSスクリプトはManagementEventWatcherが役に立つ情報のみのコマンドラインを与えるイベントを受信executed.Butされたときにトリガーされます。

void OnEventArrived(object sender, System.Management.EventArrivedEventArgs e) 
{ 
string cmdline = e.NewEvent["InputParameters"]["ProcessStartupInformation"]["CommandLine"] 
} 

VBSがspawning calc.exeを発信したことを知ることは不可能です。 "wscript.exe sample.vbs"というソースと宛先のPIDが必要です。PID = 666はWMIを使用して "calc.exe" PID = 667を作成しました。これを行う方法? また、MSFT_WmiProvider_ExecMethodAsyncEvent_Preイベントのプロセス作成を防止する可能性はありますか?

+0

より具体的なプロパティを使用できるように、回答を更新しましたが、残念ながらあなたが探しているものが正確ではありません。 – Svek

+0

最初の投稿のクエリは、CreateProcessを使用して作成されただけでなく、WMI COMを使用して作成されたプロセスを検出します。親はリクエスタではなく、WmiPrvSE.exeです。これを行うVBSのコードは、ルート投稿に追加されました。 – user3874158

答えて

0

Process.Idプロパティを試してください。

Process[] localByName = Process.GetProcessesByName("notepad"); 
int i = localByName.Length; 
while (i > 0) 
{ 
    // You can use the process Id to pass to other applications or to 
    // reference that particular instance of the application. 
    Console.WriteLine(localByName[i - 1].Id.ToString()); 
    i -= 1; 
} 

あなたが別のプロパティを使用して列挙するために必要な場合には、そのhereをそれらをチェックアウト。

+1

FYIこのコードは次のように単純化することができます: 'foreach(Process.GetProcessesByName(" notepad ")内のvar proc){Console.WriteLine(proc.Id); } '。 – Quantic

+0

すべてのメモ帳がWMIを使用して作成されているわけではありません。特定のポストイベントを使用して作成された特定のものを知る必要があります。 PIDを列挙し、新しく作成されたものを見つけることは可能ですが、これは100%安全ではない直接的な解決策ではありません。 – user3874158

+0

次に、別のプロパティに基づいてクエリを実行します。https://msdn.microsoft.com/en-us/library/system.diagnostics.process(v=vs.110).aspx – Svek

関連する問題