asp.net杀掉进程的实现代码
作者:admin 时间:2012-11-4 6:1:25 浏览:最近发现任务管理器里又出现wrtsn32.exe这个进程了,drwtsn32.exe是微软Dr Watson错误调试程序,该进程一旦出现就不会自动关闭,其严重了影响服务器的性能,所以需要关闭。关于如何禁止drwtsn32.exe进程的问题,之前曾写文章讨论过,wrtsn32.exe进程如何禁用,但是现在看来这个方法不是很凑效。
asp.net杀掉进程的实现代码
所以,我今天想到用程序来实现我的要求。我用程序来实现的不是如何禁止该进程的出现,而是如何定时的检查并关闭它。下面是asp.net的实现代码。
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Diagnostics;
using System.Management;
using System.Net;
using System.IO;
using System.Text;
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
string tempName = "";
int begpos;
int endpos;
foreach (Process thisProc in System.Diagnostics.Process.GetProcesses())
{
tempName = thisProc.ToString();
begpos = tempName.IndexOf("(") + 1;
endpos = tempName.IndexOf(")");
tempName = tempName.Substring(begpos, endpos - begpos);
if (tempName.ToLower().ToString() == "drwtsn32.exe")
{
thisProc.Kill();
}
}
}
}
利用上述代码就可以是杀掉drwtsn32.exe进程了。不过,需要注意的是,执行该程序需要系统超级管理员的权限。
不过这只是实现我的目标的第一步,我需要的是定时检测任务管理器进程,一旦发现该进程便关闭它,我该怎样做呢?
利用windows自带的计划任务自动执行程序
其实方法不止一种,我比较喜欢并建议使用的是利用windows自带的计划任务。
首先,把程序写好,测试人工访问程序能否关闭该进程;
第二,需要写一个bat批处理文件,这个文件要实现的是打开浏览器,访问关闭进程的程序,代码参考如下:
@echo off
taskkill /f /im iexplore.exe
start "D:\Program Files\Internet Explorer\IEXPLORE.EXE" http://www.abc.com/kill/
其中http://www.abc.com/kill/就是程序的执行地址。
第三,用windows自带的计划任务,建一个任务,指定什么时间执行这个bat文件,可以每小时或每个几个小时执行一次。
经过以上三个步骤,就可以实现我的目标了。
如果你想通过asp.net列出所有进程或者某进程的用户名,那么可以参考如下写法。
在上面的程序代码的foreach里加入GetProcessUserName(thisProc.Id)这句代码,然后在后面加入函数GetProcessUserName(),代码如下:
private static string GetProcessUserName(int pID)
{
string text1 = null;
SelectQuery query1 = new SelectQuery("Select * from Win32_Process WHERE processID=" + pID);
ManagementObjectSearcher searcher1 = new ManagementObjectSearcher(query1);
try
{
foreach (ManagementObject disk in searcher1.Get())
{
ManagementBaseObject inPar = null;
ManagementBaseObject outPar = null;
inPar = disk.GetMethodParameters("GetOwner");
outPar = disk.InvokeMethod("GetOwner", inPar, null);
text1 = outPar["User"].ToString();
break;
}
}
catch
{
text1 = "SYSTEM";
}
return text1;
}
标签: 脚本
- 站长推荐