通过asp.net程序来控制自己开发的windows服务
public ActionResult ListService()
{ //获取已经保存好的windows服务名称
IList<Model.ReportServicesInfoEnt> List =GetServiceNameList;
ServiceController serviceObject = null;
foreach (Model.ReportServicesInfoEnt e in List)
{
FileInfo fi= GetWindowsServiceInstallPath(e.ServiceName);
if (fi != null)
{
e.FilePath = fi.FullName;
serviceObject = GetServiceObject(e.ServiceName);
if (serviceObject != null)
{
e.StatusName = serviceObject.Status.ToString();
}
} }
ViewData["Count"] = Count;
ViewData["ReportServicesInfoEnt"] = List;
return View();
} #region 服务操作
/// <summary>
/// 服务操作
/// </summary>
/// <param name="serviceName"></param>
/// <param name="Type">5表示启动,10表示重启,15表示停止</param>
/// <returns></returns>
public ActionResult SetService(string serviceName, int SetType)
{
var msg = "";
switch (SetType)
{
case :
msg = "启动";
break;
case :
msg = "重启";
break;
case :
msg = "停止";
break;
}
var ret = new
{
Success = true,
Message = msg + "完成"
}; return Json(ret, JsonRequestBehavior.AllowGet);
}
/// <summary>
/// 获取windows服务实例
/// </summary>
/// <param name="ServiceName"></param>
/// <returns></returns>
private ServiceController GetServiceObject(string ServiceName)
{
return new ServiceController(ServiceName);
}
/// <summary>
/// 获取服务注册表信息
/// </summary>
/// <param name="ServiceName"></param>
/// <returns></returns>
private FileInfo GetWindowsServiceInstallPath(string ServiceName)
{
string key = @"SYSTEM\CurrentControlSet\Services\" + ServiceName;
if (Registry.LocalMachine.OpenSubKey(key) == null)
{
return null;
}
else
{
string path = Registry.LocalMachine.OpenSubKey(key).GetValue("ImagePath").ToString();
path = path.Replace("\"", string.Empty);
FileInfo fi = new System.IO.FileInfo(path);
return fi;
}
}
/// <summary>
/// 重启
/// </summary>
/// <param name="sc"></param>
private void ReStarService(ServiceController sc)
{
this.StopService(sc);
this.StarService(sc);
}
/// <summary>
/// 停止服务
/// </summary>
/// <param name="sc"></param>
private void StopService(ServiceController sc)
{
if ((sc.Status == ServiceControllerStatus.Paused) || (sc.Status == ServiceControllerStatus.Running))
{
sc.Stop();
}
}
/// <summary>
/// 开始服务
/// </summary>
/// <param name="sc"></param>
private void StarService(ServiceController sc)
{
if ((sc.Status == ServiceControllerStatus.Paused) || (sc.Status == ServiceControllerStatus.Stopped))
{
sc.Start();
}
}
#endregion
通过asp.net程序来控制自己开发的windows服务的更多相关文章
- C# 开发的windows服务 不能调试——讨论整理
CSDN的标题:C# 开发的windows服务 不能调试 System.Diagnostics.Debugger.Launch();在想加断点的地方加入这行,是进入断点的,可以进行调试,我的是xp系统 ...
- 在ASP.NET Core中使用Apworks开发数据服务:对HAL的支持
HAL,全称为Hypertext Application Language,它是一种简单的数据格式,它能以一种简单.统一的形式,在API中引入超链接特性,使得API的可发现性(discoverable ...
- .net开发windows服务
最近一个月都异常的繁忙,项目进度非常的紧,回头看看自己的blog,整整一个5月都没有一篇文章,非常惭愧,现在补几篇文章,介绍一下我最近关注的技术.这篇文章将介绍Windows服务程序的开发.摘要:本文 ...
- C#开发可以可视化操作的windows服务
使用C#开发自定义windows服务是一件十分简单的事.那么什么时候,我们需要自己开发windows服务呢,就是当我们需要计算机定期或者一 直执行我们开发的某些程序的时候.我经常看到许多人开发的win ...
- 【C#】开发可以可视化操作的windows服务
使用C#开发自定义windows服务是一件十分简单的事.那么什么时候,我们需要自己开发windows服务呢,就是当我们需要计算机定期或者一直执行我们开发的某些程序的时候.这里我以一个WCF的监听服务为 ...
- C#开发人员能够可视化操作windows服务
使用C#开发自己的定义windows服务是一个很简单的事.因此,当.我们需要发展自己windows它的服务.这是当我们需要有定期的计算机或运行某些程序的时候,我们开发.在这里,我有WCF监听案例,因为 ...
- Topshelf 一个简化Windows服务开发的宿主服务框架
Topshelf是 基于.net框架开发的宿主服务框架.该框架简化了服务的创建,开发人员只需要使用 Topshelf编写一个控制台程序,就能安装为Windows服务.之所以这样原因非常简单:调试一个控 ...
- 利用Topshelf把.NET Core Generic Host管理的应用程序部署为Windows服务
背景 2019第一篇文章. 此文源于前公司在迁移项目到.NET Core的过程中,希望使用Generic Host来管理定时任务程序时,没法部署到Windows服务的问题,而且官方也没给出解决方案,只 ...
- C#开发windows服务如何调试——资料整理
原文标题:C# Windows服务程序如何进行调试 原文地址:https://jingyan.baidu.com/article/456c463b18e1b00a583144b3.html 第一种: ...
随机推荐
- 【IDA*】codevs 2495:水叮当的舞步
2495 水叮当的舞步 题目描述 Description 水叮当得到了一块五颜六色的格子形地毯作为生日礼物,更加特别的是,地毯上格子的颜色还能随着踩踏而改变. 为了讨好她的偶像虹猫,水叮当决定在地毯上 ...
- Websphere中静态资源配置
Tomcat, Jetty, JBoss, GlassFish 自带的默认Servlet的名字 default Google App Engine 自带的 默认Servlet的名字 ah_defaul ...
- display:inline-block引发的间隙问题解决办法
在网页布局中我们经常会用到display:inline-block;好处是:能够将块状元素按照内联元素的方式布局,同时能设置宽高.个人感觉很好用,可是用多了慢慢的问题就来了? 1.display:in ...
- UNITY_MATRIX_IT_MV[Matrix] (转载)
转载 http://blog.csdn.net/cubesky/article/details/38682975 前面发了一篇关于unity Matrix的文章. http://blog.csdn.n ...
- MYSQL注入天书之服务器(两层)架构
Background-6 服务器(两层)架构 首先介绍一下29,30,31这三关的基本情况: 服务器端有两个部分:第一部分为tomcat为引擎的jsp型服务器,第二部分为apache为引擎的php服务 ...
- iOS工程预编译文件的创建
在搜索 添加工程名/自己的pch文件名记住加后缀
- swift-基础部分
变量常量,注释,分号,整数,浮点数.数值行类型转换,类型别名,波尔值,元组,可选,断言 let binaryInteger = 0b10001 let twoThousan ...
- HDU 1698 Just a Hook (线段树区间更新)
题目链接 题意 : 一个有n段长的金属棍,开始都涂上铜,分段涂成别的,金的值是3,银的值是2,铜的值是1,然后问你最后这n段总共的值是多少. 思路 : 线段树的区间更新.可以理解为线段树成段更新的模板 ...
- ExtJs之Ext.util.TextMetrics
<!DOCTYPE html> <html> <head> <title>ExtJs</title> <meta http-equiv ...
- db2日期和时间常用汇总
1.db2可以通过SYSIBM.SYSDUMMY1.SYSIBM.DUAL获取寄存器中的值,也可以通过VALUES关键字获取寄存器中的值. SELECT 'HELLO DB2' FROM SYSIBM ...