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. Careercup - Microsoft面试题 - 4840369632051200

    2014-05-10 07:06 题目链接 原题: Suppose you have a collection of collection Eg : CEO-> Vps-> GMs -&g ...

  2. 【BZOJ】【3004】吊灯

    思路题 要将整棵树分成大小相等的连通块,那么首先我们可以肯定的是每块大小x一定是n的约数,且恰好分成$\frac{n}{x}$块,所以我有了这样一个思路:向下深搜,如果一个节点的size=x,就把这个 ...

  3. 【BZOJ】【1221】【HNOI2001】软件开发

    网络流/费用流 说是这题跟餐巾计划一模一样……但我没做过啊……so sad 二分图建模是很好想的,但是要控制流量跟用了的毛巾一样多……oh my god 事实上对于每一天我们无论如何都是要消耗n[i] ...

  4. 用vs2010 编写C语言程序,VS2010 C++编译报错LINK : fatal error LNK1123: 转换到 COFF 期间失败: 文件无效或损坏

    编译mongodb-src-r2.2.2出现以下问题 LINK : fatal error LNK1123: 转换到 COFF 期间失败: 文件无效或损坏   这个是由于日志文件引起的,可以将 项目\ ...

  5. response ,request编码

    request.setCharacterEncoding()是你设置获得数据的编码方式.response.setCharacterEncoding()是你响应时设置的编码.response.setCo ...

  6. 对于Linux平台下C语言开发中__sync_函数的认识

      reference:http://gcc.gnu.org/onlinedocs/gcc-4.1.0/gcc/Atomic-Builtins.html#Atomic-Builtins A built ...

  7. cf div2 239 D

    D. Long Path time limit per test 1 second memory limit per test 256 megabytes input standard input o ...

  8. POJ 2004 Mix and Build (预处理+dfs)

    题意: 给N个字符串,要求出一个序列,在该序列中,后一个串,是由前一个串加一个字母后得来的(顺序可以改动). 问最多能组成多长的序列.思路:将给的字符串排序,再对所有的字符串按长度从小到大排序,若长度 ...

  9. 思考 ”前端开发人员都在关注的 GitHub 资源“

    点这里 原文: 资源 免费的计算机编程类中文书籍 免费编程书籍 计算机科学论文 codeparkshare Python初学者书籍.视频.资料.社区推荐 Python资料汇总 app应用推荐 码农周刊 ...

  10. 学习android的博客

    http://www.cnblogs.com/hll2008/http://svn.apache.org/repos/asf/http://blog.csdn.net/chenzheng_javaht ...