通过C#调用cmd来修改服务启动类型
时间:2022-01-02 04:25:46
可以使用System.ServiceProcess.ServiceController这个类允许连接到正在运行或者已停止的服务、对其进行操作或获取有关它的信息。ServiceController 提供了开始和停止服务的方法(Start, Stop)。
但是这个类并没有提供修改服务启动类型的方法,可以通过C#调用cmd来修改
参考网上的这个方法:
//设置服务的启动类型
//sServiceName服务名称
//iStartType要设置的启动类型 2:自动,3:手动,4:禁用
//返回成功状态 true:成功,false:失败
public Boolean SetWindowsServiceStartType(String sServiceName, int iStartType)
{
try
{
System.Diagnostics.ProcessStartInfo objProcessInf = new System.Diagnostics.ProcessStartInfo();
objProcessInf.FileName = "cmd.exe";
objProcessInf.CreateNoWindow = false;
objProcessInf.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
string sStartState = "boot";
switch (iStartType)
{
case 1:
{
sStartState = "system";
break;
}
case 2:
{
sStartState = "auto";
break;
}
case 3:
{
sStartState = "demand";
break;
}
case 4:
{
sStartState = "disabled";
break;
}
default:
{
break;
}
}
objProcessInf.Arguments = "/c sc config " + sServiceName + " start= " + sStartState;
System.Diagnostics.Process.Start(objProcessInf);
return true;
}
catch
{
return false;
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Diagnostics;
using System.ServiceProcess;
using Microsoft.Win32;
namespace Service
{
public class ClassService
{
private string ServiceName; //服务名称
private ServiceController sc;
/// <summary>
/// 服务操作
/// </summary>
/// <param name="ServiceName">服务名称</param>
public ClassService(string ServiceName)
{
this.ServiceName = ServiceName;
this.sc = new ServiceController(ServiceName);
}
/// <summary>
/// 启动服务
/// </summary>
/// <returns></returns>
public bool StartService()
{
try
{
if (sc.Status != ServiceControllerStatus.Running)
sc.Start();
else
return false;
}
catch (Exception)
{
return false;
}
return true;
}
/// <summary>
/// 停止服务
/// </summary>
/// <returns></returns>
public bool StopService()
{
try
{
if (sc.Status != ServiceControllerStatus.Stopped)
sc.Stop();
else
return false;
}
catch (Exception)
{
return false;
}
return true;
}
/// <summary>
/// 重启服务
/// </summary>
/// <returns></returns>
public bool RestartService()
{
if (StopService())
{
if (StartService())
return true;
else
return false;
}
else
return false;
}
/// <summary>
/// 获取服务启动类型
/// </summary>
/// <returns>2:自动 3:手动 4:禁用 0:获取失败</returns>
public int GetServiceStartMode()
{
int Mode = 0;
try
{
RegistryKey key = Registry.LocalMachine.OpenSubKey(@"SYSTEM\CurrentControlSet\services\" + ServiceName);
Mode = Convert.ToInt32(key.GetValue("Start"));
key.Close();
}
catch (Exception)
{
return 0;
}
return Mode;
}
/// <summary>
/// 设置服务启动类型
/// </summary>
/// <param name="Mode">2:自动 3:手动 4:禁用</param>
/// <returns></returns>
public bool SetServiceStartMode(int Mode)
{
try
{
RegistryKey key = Registry.LocalMachine.OpenSubKey(@"SYSTEM\CurrentControlSet\services\" + ServiceName, true);
key.SetValue("Start", Mode);
key.Close();
}
catch (Exception)
{
return false;
}
return true;
}
}
}
标签:调用cmd,系统服务
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
详解Http请求中Content-Type讲解以及在Spring MVC中的应用
2022-10-19 04:14:11
解决Android Studio 3.0 butterknife:7.0.1配置的问题
2021-08-20 09:23:05
IDEA报错:无效的源发行版解决方案
2022-06-05 08:38:58
![](https://img.aspxhome.com/file/2023/4/62454_0s.png)
C#、ASP.NET通用扩展工具类之LogicSugar
2023-11-18 09:56:07
详解RestTemplate的三种使用方式
2023-06-07 16:30:45
Java开发完整短信验证码功能的全过程
2023-05-05 15:35:24
![](https://img.aspxhome.com/file/2023/7/92557_0s.png)
如何使用JaCoCo分析java单元测试覆盖率
2023-01-13 11:38:39
![](https://img.aspxhome.com/file/2023/1/82031_0s.png)
c#同步两个子目录文件示例分享 两个文件夹同步
2022-01-25 05:03:03
java 实现约瑟夫环的实例代码
2022-06-24 16:26:11
Java应用多机器部署解决大量定时任务问题
2023-10-28 17:07:17
![](https://img.aspxhome.com/file/2023/1/58691_0s.png)
Java二维数组查找功能代码实现
2023-01-04 19:47:17
C#调用新浪微博API实例代码
2022-12-21 14:02:15
![](https://img.aspxhome.com/file/2023/2/82192_0s.jpg)
Java spring的三种注入方式详解流程
2021-07-02 12:25:47
![](https://img.aspxhome.com/file/2023/0/85910_0s.png)
深入解析Java的Spring框架中bean的依赖注入
2023-12-20 18:50:52
![](https://img.aspxhome.com/file/2023/8/66188_0s.png)
C#单例模式(Singleton Pattern)详解
2021-12-30 05:55:03
Java中Arraylist动态扩容方法详解
2023-04-30 23:25:53
![](https://img.aspxhome.com/file/2023/6/82026_0s.jpg)
Springcloud微服务架构基础知识解析
2023-01-26 14:37:10
![](https://img.aspxhome.com/file/2023/0/61820_0s.png)
Android Studio实现简易进制转换计算器
2023-09-17 04:19:29
Android DataBinding的官方双向绑定示例
2023-09-15 04:39:27
如何在C# 枚举中增加行为
2022-10-28 06:11:34