最近经常在我的xp系统进程中出现Zsd.exe进程。刚开始他占用内存不是很大。但是过了一段时间就会变成几百M

机器就会变得很卡,网上说Zsd可能是病毒。所以我就想要不写一个Windows服务,让他每隔几秒钟去kill 掉Zsd.exe

下面是我用VS编写服务程序的过程,为了以后随时查阅,现在把它记录下来。

1、新建C# Windows服务:windows service工程

2、新建windows service工程后,系统自动生成一个Service1.cs文件,默认是其设计视图。选择查看其代码,默认有构造函数、OnStart、OnStop三个函数,如下图所示:

3、新建了C# Windows服务之后,还要设置该服务运行的周期,左侧的ToolBox中有两个timmer,一个在组件下,一个在windows form下,可惜这两个都不能用,我们要手工新建一个timmer,并设置其属性和事件。

private System.Timers.Timer t = null;
private System.Timers.ElapsedEventHandler eehandler = null;

protected override void OnStart(string[] args)
{
  t = new System.Timers.Timer(10000);//实例化Timer类,设置间隔时间为10000毫秒;
  eehandler = new System.Timers.ElapsedEventHandler(TimeElapse);
  t.Elapsed += eehandler;//到达时间的时候执行事件;
  t.AutoReset = true;//设置是执行一次(false)还是一直执行(true);
  t.Enabled = true;//是否执行System.Timers.Timer.Elapsed事件;
}

private void KillProcess(string processName)
{
  System.Diagnostics.Process myproc = new System.Diagnostics.Process();
  //得到所有打开的进程
  try
  {
    foreach (Process thisproc in Process.GetProcessesByName(processName))
    {
      if (!thisproc.CloseMainWindow())
      {
        thisproc.Kill();
      }
    }
  }
  catch (System.Exception ex)
  {
    EventLog log = new EventLog();
    log.Source = "我的应用程序";
    log.WriteEntry(ex.Message, EventLogEntryType.Error);
  }
}

public void TimeElapse(object source, System.Timers.ElapsedEventArgs e)
{
  KillProcess("Zsd");
}
protected override void OnStop()
{
  t.Enabled = false;
  t.Elapsed -= eehandler;
  t.Close();
  t = null;
}

4、服务编写之后,还不能由SCM(服务控制管理器)进行管理,需要给该服务添加装载器。在Service1.cs的设计视图,点击右键,选择“添加装载器”,系统默认就会添加ProjectInstaller.cs这个类。

5、添加该类后,在该类的设计视图上可看到serviceInstaller1和serviceProcessInstaller1,分别设置其属性。

设置serviceInstaller1的运行方式为手动或者自动

设置serviceInstaller1的ServiceName,设置为什么,服务列表中就显示什么

设置serviceProcessInstaller1的运行账号为LocalSystem

6、编译该工程

7、使用vs自带的命令行工具,运行installutil 编译生成的exe

8、在系统的服务中可看到我们创建的服务。

一下内容来自于:http://www.cnblogs.com/BoyXiao/archive/2011/08/07/2130208.html

服务调试:

服务的调试是比较变态的,方法貌似也还是有几种,

不过我呢,反正也就知道下面一种而已,个人觉得这种方式也还用得下去,即调试起来感觉还不错的 !

1. 首先在你的服务源代码中添加一个定时器,定时器的示例代码如上所示。

2. 在服务的 Start 事件中启动定时器,并且将定时器设置为可用状态。

3. 在服务中添加如下代码:(我的定时器为 3 秒钟,所以 15 秒后就会执行 Debug.WriteLine 了)

   1:          private Int32 nCount = 0;
   2:   
   3:          /// <summary>
   4:          /// 定时器回调处理例程
   5:          /// </summary>
   6:          /// <param name="source"></param>
   7:          /// <param name="e"></param>
   8:          private void Timer_Tick(object source, System.Timers.ElapsedEventArgs e)
   9:          {
  10:              nCount++;
  11:              if (nCount == 5)
  12:              {
  13:                  Debug.WriteLine("In Timer_Tick !");
  14:              }

3. 编译和安装好服务。

4. 下断点。

5. 在服务控制台管理器中启动服务。

6. 以下操作必须在 15 秒内完成,否则无法进入调试状态(因为 Debug.WriteLine 已经执行完了)。

7. VS2010 中 “工具 –> 附加到进程”。

8. 选择好服务所在的进程(我这里的服务进程为 WorkTracker.Service.exe),然后单击附加后就慢慢等待 15 秒钟的过去吧。

9. 15 秒到达时,我们的服务就会进入到调试状态了,然后再 VS 中就可以来调试服务了。

编写C# Windows服务,用于杀死Zsd.exe进程的更多相关文章

  1. 【JavaService】使用Java编写部署windows服务

    如果你玩windows系统,你对服务这个东西并不会陌生,服务可以帮我们做很多事情,在不影响用户正常工作的情况下,可以完成很多我们需要的需求. 众所周知,微软的visio studio内置的Servic ...

  2. C#编写的windows服务安装后启动提示“服务启动后又停止了”

    使用C#编写的windows服务安装到服务器上行后进行启动时,总是提示“服务启动后又停止了”. 检查了服务逻辑是没问题,安装在开发本地也是正常,网上查了资料说是可能是服务没有注册,我检查了服务是正常注 ...

  3. 以 Console 方式运行、调试、编译 .Net 编写的 Windows 服务

    经常看到一些人在调试 Windows 服务时,很执著的在附加进程后调试!其实 .Net 编写的 Windows 应用程序,包括 Windows 服务都可以编译成 Console 程序!甚至于 ASP. ...

  4. Asp.net(C#) windows 服务{用于实现计划任务,事件监控等}

    什么是windows服务?      一个Windows服务程序是在Windows操作系统下能完成特定功能的可执行的应用程序.Windows服务程序虽然是可执行的,但是它不像一般的可执行文件通过双击就 ...

  5. 批处理安装Windows服务,提示"InstallUtil.exe"不是内部命令也不是外部命令解决方式

    今天在测试一个C#写的windows服务的时候,在用bat进行调用cmd安装的时候, cd C:\Windows\Microsoft.NET\Framework\v2.0.50727 InstallU ...

  6. Topshelf一个用于使用.NET构建Windows服务框架

    1 Topshelf是什么? Topshelf是用于托管使用.NET框架编写的Windows服务的框架.服务的创建得到简化,从而使开发人员可以创建一个简单的控制台应用程序,可以使用Topshelf将其 ...

  7. 手把手教用C#编写Windows服务 并控制服务 安装、启动、停止、卸载

    Windows服务 Microsoft Windows 服务(即,以前的 NT 服务)使您能够创建在它们自己的 Windows 会话中可长时间运行的可执行应用程序.这些服务可以在计算机启动时自动启动, ...

  8. 使用Visual Studio 2015 Community 开发windows服务

    昨天研究在.NET下开发Windows服务程序,期间遇到一些小问题,这里仅将自己的开发过程和需要注意的地方写下和广大网友分享……  1.基础   Windows服务是指系统启动时能够自己运行的程序.W ...

  9. 创建Windows服务(Windows Services)N种方式总结

    最近由于工作需要,写了一些windows服务程序,有一些经验,我现在总结写出来.目前我知道的创建创建Windows服务有3种方式:a.利用.net框架类ServiceBaseb.利用组件Topshel ...

随机推荐

  1. bzoj4028: [HEOI2015]公约数数列

    Description 设计一个数据结构. 给定一个正整数数列 a_0, a_1, ..., a_{n - 1},你需要支持以下两种操作: 1. MODIFY id x: 将 a_{id} 修改为 x ...

  2. Linux一键安装PHP/JAVA环境OneinStack

    OneinStack 是一款PHP/JAVA环境一键配置工具.                         OneinStack包含以下组合   lnmp(Linux + Nginx+ MySQL ...

  3. Facebook Hacker Cup 2015 Round 1--Homework(筛选法求素数)

    题意:给定A,B,K(A<=B)三个数,问在[A,B]范围内的数素数因子个数为K的个数. 题解:典型的筛选法求素数.首先建立一个保存素数因子个数的数组factorNum[],以及到n为止含有素数 ...

  4. Nginx+keepalived做双机热备加tomcat负载均衡

    Nginx+keepalived做双机热备加tomcat负载均衡 环境说明: nginx1:192.168.2.47 nginx2:192.168.2.48 tomcat1:192.168.2.49 ...

  5. [转] Nginx模块开发入门

    前言 Nginx是当前最流行的HTTP Server之一,根据W3Techs的统计,目前世界排名(根据Alexa)前100万的网站中,Nginx的占有率为6.8%.与Apache相比,Nginx在高并 ...

  6. linux 下各errno的意义

    strerror(errno):获取errno对应的错误 #include <string.h> /* for strerror */ #include <errno.h> # ...

  7. svcutil 生成代理类时的问题

    如果有这个的xsd, group内嵌choice的结构: <xs:complexType name="CreateType">        <xs:sequen ...

  8. Android(java)学习笔记220:开发一个多界面的应用程序之界面间数据传递

    1.界面跳转的数据传递 (1)intent.setData() --> intent.getData():     传递的数据比较简单,一般是文本类型的数据String:倘若我们传递的数据比较复 ...

  9. 我的github今天大手笔分享,welcome——fork

    看项目名就知道是什么样子的demo,还包含了数据库文件,welcome fork!

  10. JavaScript--函数-按值传递

    按值传递(byValue): 两个变量间赋值或将变量作为参数传入函数时,其实都是将原变量中的值,赋值一份给对方(新变量) 对原始类型的值: 修改新变量,不会影响原变量 对引用类型的对象: 通过新变量修 ...