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. 4、android xml中drawableTop(drawableBoottom、drawableLeft、drawableRight)在java代码中的动态配置

    做安卓开发的朋友都知道,我们在xml中可以通过这样来对button设置其上部或者(下.左.右)的图片资源: 那么如果需要动态配置图片呢?我们不得不使用java代码来进行操作: Drawable dra ...

  2. 百度地图之POI

    // // PoiViewController.m // baiDuDemo // // Created by City--Online on 15/6/4. // Copyright (c) 201 ...

  3. Codeforces Round #351 (VK Cup 2016 Round 3, Div. 2 Edition) C - Bear and Colors

    题目链接: http://codeforces.com/contest/673/problem/C 题解: 枚举所有的区间,维护一下每种颜色出现的次数,记录一下出现最多且最小的就可以了. 暴力n*n. ...

  4. 简述负载均衡&CDN技术

    曾经见到知乎上有人问“为什么像facebook这类的网站需要上千个工程师维护?”,下面的回答多种多样,但总结起来就是:一个高性能的web系统需要从无数个角度去考虑他,大到服务器的布局,小到软件中某个文 ...

  5. hdu 3549 Flow Problem 网络流

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3549 Network flow is a well-known difficult problem f ...

  6. poj 2342 Anniversary party

    题目链接:http://poj.org/problem?id=2342 题意:读题很容易懂,这里不做介绍. 解法:树形DP之路的第一道题. #include<iostream> #incl ...

  7. apple wwdc resource

    1. every wwdc topic list http://asciiwwdc.com 2. wwdc video直接查看apple develop-> video 3. wwdc open ...

  8. CNAME

    CNAME指别名记录也被称为规范名字.这种记录允许您将多个名字映射到同一台计算机. 通常用于同时提供WWW和MAIL服务的计算机.例如,有一台计算机名为“host.mydomain.com”(A记录) ...

  9. Topcoder srm 632 div2

    脑洞太大,简单东西就是想复杂,活该一直DIV2; A:水,基本判断A[I]<=A[I-1],ANS++; B:不知道别人怎么做的,我的是100*N*N;没办法想的太多了,忘记是连续的数列 我们枚 ...

  10. CSS 外边距(margin)重叠及防止方法

    边界重叠是指两个或多个盒子(可能相邻也可能嵌套)的相邻边界(其间没有任何非空内容.补白.边框)重合在一起而形成一个单一边界. 两个或多个块级盒子的垂直相邻边界会重合.结果的边界宽度是相邻边界宽度中最大 ...