5

複数のユーザーが Windows 2003 サーバーで attachemate を実行しています。user_2 が起動した attachemate.exe を強制終了せずに、user_1 が起動した attachemate.exe を強制終了したい。

VBScript を使用したい。

4

2 に答える 2

5

これを使用して、プロセスの所有者が誰であるかを確認できます。取得したら、Win32_Process を使用してプロセス ID でプロセスを強制終了できます。

MSDN Win32_Process クラスの詳細

MSDN Win32_Process でプロセスを終了する

これを行うためのよりクリーンな方法は確かにありますが、ここに私が思いついたものがあります。注:もちろん、これは同じ名前の複数のプロセスを処理しませんが、それらを保持する配列などでその部分を処理できると思います。:)

strComputer = "."
strOwner = "A111111"
strProcess = "'notepad.exe'"

' Connect to WMI service and Win32_Process filtering by name'
Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" _
    & strComputer & "\root\cimv2")
Set colProcessbyName = objWMIService.ExecQuery("Select * from Win32_Process Where Name = " _
    & strProcess)

' Get the process ID for the process started by the user in question'
For Each objProcess in colProcessbyName
    colProperties = objProcess.GetOwner(strUsername,strUserDomain)
    if strUsername = strOwner then
        strProcessID = objProcess.ProcessId
    end if
next

' We have the process ID for the app in question for the user, now we kill it'
Set colProcessList = objWMIService.ExecQuery("Select * from Win32_Process where ProcessId =" & strProcessID)
For Each objProcess in colProcess
    objProcess.Terminate()
Next
于 2008-09-18T02:11:13.230 に答える
2

http://sysinternals.com/から pskill にシェルアウトします。

コマンドライン: pskill -u user_1 attachemate.exe

于 2008-09-16T20:01:21.397 に答える