专著于富媒体技术~
本站某些作品来源于互联网,如果侵犯了您的利益,请留言说明
先说说如何用C#编写系统服务吧~~~

首先建立新项目,选择windows 服务,然后填上名字,确定,就OK了,然后双击打开解决方案管理器里的“Services1.cs”(默认创建项目完毕后就会打开),然后右键,点击查看代码,就看到两个方法了:


     protected override void OnStart(string[] args)
        {
            // TODO: 在此处添加代码以启动服务。
        }

        protected override void OnStop()
        {
            // TODO: 在此处添加代码以执行停止服务所需的关闭操作。

        }


然后加上自己的代码吧。。。

我的是写成这样了:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.ServiceProcess;
using System.Text;

namespace WindowsServiceTest
{
    public partial class Service1 : ServiceBase
    {

        private Process ps = new Process();
        public Service1()
        {
            InitializeComponent();
        }

        protected override void OnStart(string[] args)
        {
            // TODO: 在此处添加代码以启动服务。
        ps.StartInfo.FileName = "cmd.exe";
            ps.StartInfo.CreateNoWindow = false;
            ps.StartInfo.UseShellExecute = true;
            ps.StartInfo.WindowStyle = ProcessWindowStyle.Normal;
            ps.Start();
        }

        protected override void OnStop()
        {
            // TODO: 在此处添加代码以执行停止服务所需的关闭操作。
        ps.Kill();
            ps.Close();
            ps.Dispose();
        }
    }
}


目的是让服务启动的时候能弹出命令行。。。

代码写好后,返回Services1.cs的设计模式,然后在上面上右键,然后倒数第二项,添加安装程序,然后就会自动加上“ProjectInstaller.cs”,然后打开“ProjectInstaller.cs”的设计模式,会发现上面有两个控件:“serviceProcessInstaller1”、“serviceInstaller1”,首先查看“serviceInstaller1”的属性,里面有服务名,显示名,描述,启动类型等可以调节,自己看吧,有中文提示的,然后再看“serviceProcessInstaller1”,里面最要紧的一项是“Account”,即运行该服务的帐户类型,看自己的需要选吧,不过最好用默认的,呵呵,自己试吧。。。

都弄好了吧,然后生成吧,切记,不要按F5,不然的话,就会系统崩溃,硬盘被格,CPU烧掉,主机着火。。。说着玩的,想按就按吧,出了啥事别怪我。。。

生成好后,在C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727目录下找到InstallUtil.exe,当然,安装的framework版本不一样,对应的目录也不一样,然后运行cmd,把目录定位到fw目录下,不会的直接copy吧:

cd C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727

然后输入InstallUtil.exe 项目目录\bin\项目名称.exe,然后敲下回车,就会出现信息了,最后会提示服务安装完毕。。。

不过如果你在“serviceProcessInstaller1”里面的“Account”用的是默认User的话,在安装服务过程中,就会让你输入帐号密码,我也不知道该怎么输,自己试吧,反正我是用LocalSystem或者LocalService的。

然后,服务就安装好了,运行services.msc看看,找到没。。。

找到就启动吧,然后你会发现,process调用的程序并没有出现用户界面,没关系,先停掉。。。

双击安装好的服务,然后出现了属性页,点击“登陆”标签页,看到没,“允许服务与桌面交互”,没错,就是他,选上吧,确定,再启动试试。。。成了吧,呵呵。。。

完了,OVER,有事留言吧,呵。。。

            


作者:gdgzboy@牛C网
地址:http://www.niuc.net/alias/csharp-services-show-ui/
版权所有。转载时必须以链接形式注明作者和原始出处及本声明!



mike
2010/01/14 08:39
请教
InstallUtil.exe 项目目录\bin\项目名称.exe的时候
提示未能加载文件或程序集 或它的某一个依赖项。系统找不到指定的文件
mike
2010/01/14 08:38
请教:
InstallUtil.exe 项目目录\bin\项目名称.exe
提示
未能加载文件或程序集 或它的某一个依赖项。系统找不到指定的文件
分页: 1/1 第一页 1 最后页
发表评论
表情
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
打开HTML
打开UBB
打开表情
隐藏
昵称   密码   游客无需密码
网址   电邮   [注册]
               

验证码 不区分大小写