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服务的更多相关文章

  1. C# 开发的windows服务 不能调试——讨论整理

    CSDN的标题:C# 开发的windows服务 不能调试 System.Diagnostics.Debugger.Launch();在想加断点的地方加入这行,是进入断点的,可以进行调试,我的是xp系统 ...

  2. 在ASP.NET Core中使用Apworks开发数据服务:对HAL的支持

    HAL,全称为Hypertext Application Language,它是一种简单的数据格式,它能以一种简单.统一的形式,在API中引入超链接特性,使得API的可发现性(discoverable ...

  3. .net开发windows服务

    最近一个月都异常的繁忙,项目进度非常的紧,回头看看自己的blog,整整一个5月都没有一篇文章,非常惭愧,现在补几篇文章,介绍一下我最近关注的技术.这篇文章将介绍Windows服务程序的开发.摘要:本文 ...

  4. C#开发可以可视化操作的windows服务

    使用C#开发自定义windows服务是一件十分简单的事.那么什么时候,我们需要自己开发windows服务呢,就是当我们需要计算机定期或者一 直执行我们开发的某些程序的时候.我经常看到许多人开发的win ...

  5. 【C#】开发可以可视化操作的windows服务

    使用C#开发自定义windows服务是一件十分简单的事.那么什么时候,我们需要自己开发windows服务呢,就是当我们需要计算机定期或者一直执行我们开发的某些程序的时候.这里我以一个WCF的监听服务为 ...

  6. C#开发人员能够可视化操作windows服务

    使用C#开发自己的定义windows服务是一个很简单的事.因此,当.我们需要发展自己windows它的服务.这是当我们需要有定期的计算机或运行某些程序的时候,我们开发.在这里,我有WCF监听案例,因为 ...

  7. Topshelf 一个简化Windows服务开发的宿主服务框架

    Topshelf是 基于.net框架开发的宿主服务框架.该框架简化了服务的创建,开发人员只需要使用 Topshelf编写一个控制台程序,就能安装为Windows服务.之所以这样原因非常简单:调试一个控 ...

  8. 利用Topshelf把.NET Core Generic Host管理的应用程序部署为Windows服务

    背景 2019第一篇文章. 此文源于前公司在迁移项目到.NET Core的过程中,希望使用Generic Host来管理定时任务程序时,没法部署到Windows服务的问题,而且官方也没给出解决方案,只 ...

  9. C#开发windows服务如何调试——资料整理

    原文标题:C# Windows服务程序如何进行调试 原文地址:https://jingyan.baidu.com/article/456c463b18e1b00a583144b3.html 第一种: ...

随机推荐

  1. SQL SERVER数据库修改是否区分大小写

    昨天去客户,发现程序无法应用,跟踪错误提示,提示的大致意思是“数据库表名和数据库字段名不存在”.查询后发现是SQL Server数据库设置了区分大小写的缘故(一般安装时,Oracle的正确安装下是默认 ...

  2. 【Binary Tree Maximum Path Sum】cpp

    题目: Given a binary tree, find the maximum path sum. The path may start and end at any node in the tr ...

  3. Leetcode#128 Longest Consecutive Sequence

    原题地址 1. 把所有元素都塞到集合里2. 遍历所有元素,对于每个元素,如果集合里没有,就算了,如果有的话,就向左向右拓展,找到最长的连续范围,同时在每次找的时候都把找到的删掉.这样做保证了同样的连续 ...

  4. java中的匿名内部类

    匿名内部类在java编码中不是很常见,它可一让类实现多继承的特性(多个父类~1个子类) java中的匿名内部类总结http://www.cnblogs.com/nerxious/archive/201 ...

  5. [工作积累] jboolean is neither JNI_TRUE nor JNI_FALSE

    jboolean result = env->CallBooleanMethod(ShopDataAndroid.IAPBridge_Object, ShopDataAndroid.IAPBri ...

  6. 引擎设计跟踪(九.14.2d) [翻译] shader的跨平台方案之2014

    Origin: http://aras-p.info/blog/2014/03/28/cross-platform-shaders-in-2014/ 简译 translation: 作者在2012年写 ...

  7. slot的含义

    1) slot就是槽的意思,是一个资源单位,只有给task分配了一个slot之后,这个task才可以运行.slot分两种,map slot沪蓉reduce slot.另外,slot是一个逻辑概念,一个 ...

  8. HDU4718 The LCIS on the Tree(LCT)

    又是一枚LCT,写一发加深一下对LCT的理解.本题的坑爹之处就在于,它实在是太坑爹了.询问的是树路径上的最长连续上升的子串,考验的是怎么样去维护.一开始的想法是维护三个变量 ls,rs,mxl,分别表 ...

  9. Javascript offsetLeft详情

    <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <m ...

  10. 2014多校第十场1002 || HDU 4972 A simple dynamic programming problem

    题目链接 题意 : 每次无论哪个队投进一个篮球,就记下现在两队比分的差值,问你最后的结果有多少种情况. 思路 : 该题实在是不好理解,最后的结果有多少种情况就是说不管中间过程怎么来的,只要最后结果不一 ...