专著于富媒体技术~
本站某些作品来源于互联网,如果侵犯了您的利益,请留言说明!
本站某些作品来源于互联网,如果侵犯了您的利益,请留言说明!
首先建立新项目,选择windows 服务,然后填上名字,确定,就OK了,然后双击打开解决方案管理器里的“Services1.cs”(默认创建项目完毕后就会打开),然后右键,点击查看代码,就看到两个方法了:
protected override void OnStart(string[] args)
{
// TODO: 在此处添加代码以启动服务。
}
protected override void OnStop()
{
// TODO: 在此处添加代码以执行停止服务所需的关闭操作。
}
{
// 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();
}
}
}
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/
版权所有。转载时必须以链接形式注明作者和原始出处及本声明!
牛C网推荐您再看看以下日志:
ASP.NET获取汉字拼音的第一个字母
C# 3.0新特性初步研究 Part5-匿名类型
一个自定义LABEL组件的C#源代码
浅谈ASP.NET的权限管理和用户验证
ArrayList使用toArray()构造数组时的问题
ASP.NET调用存储过程方法新解
ASP.NET-DataGrid控件的排序功能
ASP.NET中利用Crystal Report创建图表
VS .net 2003调试javascript中两个杂症的解决
DataGrid学习七
ASP.NET获取汉字拼音的第一个字母
C# 3.0新特性初步研究 Part5-匿名类型
一个自定义LABEL组件的C#源代码
浅谈ASP.NET的权限管理和用户验证
ArrayList使用toArray()构造数组时的问题
ASP.NET调用存储过程方法新解
ASP.NET-DataGrid控件的排序功能
ASP.NET中利用Crystal Report创建图表
VS .net 2003调试javascript中两个杂症的解决
DataGrid学习七
上一篇




InstallUtil.exe 项目目录\bin\项目名称.exe的时候
提示未能加载文件或程序集 或它的某一个依赖项。系统找不到指定的文件
InstallUtil.exe 项目目录\bin\项目名称.exe
提示
未能加载文件或程序集 或它的某一个依赖项。系统找不到指定的文件