1

(理想的にはVBScript / JScriptのようなスクリプト言語を使用して)別のプログラムを生成したプロセスの詳細を取得する方法はありますか?つまり、Computrace LoJackがiexploreを起動した場合、インターネットとの通信を処理しますか?

4

1 に答える 1

2

WMIを使用して、目的のプロセスのParentProcessIdを確認できます。「通常の」ユーザーモードアプリケーションの場合、親プロセスはexplorer.exeである必要があります。

strProcess = "iexplore.exe"
strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colProcesses = objWMIService.ExecQuery("Select * from Win32_Process " _
    & " Where name = '" & strProcess & "'")

For Each objProcess in colProcesses
    WScript.Echo objProcess.ParentProcessId
Next

Internet Explorerの場合、IEのIDも確認してください。これは、IE自体の複数のインスタンスを生成するためです。次のようなものを試してください。

strProcess = "iexplore.exe"
strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")

Set colProcesses = objWMIService.ExecQuery("Select * from Win32_Process " _
    & " Where name = 'explorer.exe' OR name = 'iexplore.exe'")

i = 0
arrIds = Array()
For Each objProcess in colProcesses
    ReDim Preserve arrIds(i)
    arrIds(i) = objProcess.ProcessId
    i = i + 1
Next

Set colProcesses = objWMIService.ExecQuery("Select * from Win32_Process " _
    & " Where name = '" & strProcess & "'")

For Each objProcess in colProcesses
    intParentID = objProcess.ParentProcessId

    blnIsFound = False
    For Each intID in arrIds
        If intID = intParentID Then
            blnIsFound = True
            Exit For
        End If
    Next

    If blnIsFound = False Then
        WScript.Echo "Process " & objProcess.ProcessId & " spawned by process " & objProcess.ParentProcessId
    End If
Next
于 2012-04-27T18:01:48.170 に答える