ユーザのプロセスを終了する方法
Windows Server 2008 R2で仮想デスクトップを使用しています。(XenApp 6.5を使用)
サーバには80名程度のユーザがログオンして、それぞれアプリケーションを起動しているため、
プロセスの数が非常に多くなります。(同じプロセス名でもユーザ数分起動しているため)
上記の環境であるアプリを終了する際に、サブ画面のプロセスが起動している場合は
一緒に終了するような作りにしたいと考えており、現在のところ以下のWMIのスクリプトを
使用してプロセスの一覧を取得し、for文で一覧から該当するプロセスIDを特定してkillする
というような仕組みを検討しております。
Strcomputer = "."
Set objWMIService = GetObject("winmgmts:\\" & Strcomputer & "\root\cimv2")
Set colitems = objWMIService.ExecQuery("Select * from Win32_Process", , 48)
ただ、上記のようにWin32_Processを使用すると、サーバ上で起動している全ユーザの
プロセスが検索対象となってしまうため、処理に時間がかかることを懸念しております。
可能であれば、そのユーザだけのプロセスを検索対象としたいのですが、
そのような方法はありますでしょうか?
WMI以外の方法でも構いませんので、アドバイスを頂けると助かります。
お礼
なるほど! 後者(ファイルで管理する)を使えば、どの子プロセスが作ったファイルかも判りますね。 (ファイル名=子プロセス特有の名称 にしておけばいいですね) 複数の子プロセスがいても、監視しやすいですね! 本当にありがとうございました。 今日はぐっすり眠れそうです。 これをもって締め切りにします。 また何かあったら、よろしくお願いいたします。