参考来源:
https://www.jb51.net/article/32645.htm
https://www.cnblogs.com/appskyy/p/11019647.html (主要就是这个DOS CMD 调用DOS)
public class SystemServicesMSCHelper

    {
public static void StartServicesByServiceName(string servicesName)
{
using (ServiceController sc = new ServiceController(servicesName))
{
if (sc.CanStop)//判断是否可以关闭
{
try
{
sc.Stop();
sc.WaitForStatus(ServiceControllerStatus.Stopped);//服务停止了才继续下一步 }
catch (Exception ex)
{
Console.WriteLine("停止服务失败:" + ex);
}
} if (!sc.CanStop)//判断是否可以开启
{
try
{
sc.Start();
sc.WaitForStatus(ServiceControllerStatus.Running);//服务运行了才继续下一步
}
catch (Exception ex)
{
Console.WriteLine("启动服务失败:" + ex);
}
}
sc.Close();
sc.Dispose();
} } private static string CmdPath = @"C:\Windows\System32\cmd.exe"; /// <summary>
/// 通过管理员命令运行CMD启动服务
/// </summary>
/// <param name="serverName"></param>
public static void RunCmdServicesByServerName(string serverName)
{
System.Security.Principal.WindowsIdentity identity = System.Security.Principal.WindowsIdentity.GetCurrent();
System.Security.Principal.WindowsPrincipal principal = new System.Security.Principal.WindowsPrincipal(identity);
//判断当前登录用户是否为管理员
if (principal.IsInRole(System.Security.Principal.WindowsBuiltInRole.Administrator))
{
StartServicesByServiceName(serverName);
System.Diagnostics.Process.Start(CmdPath, "/c sc Start " + serverName);
}
else
{
//创建启动对象
System.Diagnostics.ProcessStartInfo startInfo = new System.Diagnostics.ProcessStartInfo();
startInfo.UseShellExecute = true;
startInfo.WorkingDirectory = @"C:\Windows\System32\";
startInfo.FileName = CmdPath;
startInfo.Arguments = $"/c sc Start " + serverName;
//设置启动动作,确保以管理员身份运行
startInfo.Verb = "RunAs";
try
{
System.Diagnostics.Process.Start(startInfo);
}
catch
{ } }
} }

C# 启动windows 服务(通过cmd管理员方式和winform 方式)的更多相关文章

  1. 使用.NET Core中创建Windows服务(一) - 使用官方推荐方式

    原文:Creating Windows Services In .NET Core – Part 1 – The "Microsoft" Way 作者:Dotnet Core Tu ...

  2. 使用.NET Core创建Windows服务(一) - 使用官方推荐方式

    原文:使用.NET Core创建Windows服务(一) - 使用官方推荐方式 原文:Creating Windows Services In .NET Core – Part 1 – The &qu ...

  3. 网页启动Windows服务

    如何在网页启动Windows服务   由于公司有许多windows服务进行业务的处理,所谓对服务的维护也是一个比较头痛的问题,因为自己也不知道服务什么时候自动停了,而且更主要的原因是服务都是由运维部门 ...

  4. c#启动windows服务问题总结

    程序以管理员权限运行的原因 在Vista 和 Windows 7 及更新版本的操作系统,增加了 UAC(用户账户控制) 的安全机制,如果 UAC 被打开,用户即使以管理员权限登录,其应用程序默认情况下 ...

  5. 如何在网页启动Windows服务

    由于公司有许多windows服务进行业务的处理,所以对服务的维护也是一个比较头痛的问题,因为自己也不知道服务什么时候自动停了,而且更主要的原因是服务都是由运维部门在维护管理,开发这边没有直接操作服务的 ...

  6. Windows服务中用Timer和线程两种方式来执行定时任务

    在Service服务文件夹下新建Windows服务 - TestService

  7. 启动windows服务的bat文件编写格式

    1.bat文件需要和bin文件内容放在一起 启动服务的bat文件如下: sc create 邮件服务 binPath= "%~dp0可执行文件名称.exe" start= auto ...

  8. 启动Windows服务

    实现效果: 知识运用: ServiceController类的ServiceName Status属性 public string ServiceName {get; set;} //对此Servic ...

  9. Windows Service 学习系列(二):C# windows服务:安装、卸载、启动和停止Windows Service几种方式

    一.通过InstallUtil.exe安装.卸载.启动.停止Windows Service 方法一 1.以管理员身份运行cmd 2.安装windows服务 切换cd C:\Windows\Micros ...

  10. 无法从命令行或调试器启动服务,必须首先安装Windows服务(使用installutil.exe),然后用ServerExplorer、Windows服务器管理工具或NET START命令启动它

    无法从命令行或调试器启动服务,必须首先安装Windows服务(使用installutil.exe),然后用ServerExplorer.Windows服务器管理工具或NET START命令启动它 1. ...

随机推荐

  1. 【Python】导出docx格式Word文档中的文本、图片和附件等

    [Python]导出docx格式Word文档中的文本.图片和附件等 零.需求 为批量批改学生在机房提交的实验报告,我需要对所有的实验文档内容进行处理.需要批量提取Word文档中的图片和附件以便进一步检 ...

  2. Win10隐藏托盘图标-注册表

    HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer NoTrayItemsDisplay(类型: ...

  3. public boolean add(E e)的源码分析

    public class ArrayList<E> extends AbstractList<E> implements List<E>, RandomAccess ...

  4. VScode前端代码编辑器:修改默认打开的浏览器和代码提示设置

    一.修改默认打开的浏览器 二.代码提示设置

  5. C#之值类型与引用类型--out参数--ref参数-"=="、Equals和ReferenceEquals之间的区别

    一.值类型和引用类型 1.值类型 (1)值类型的大小是固定的 (2)值类型都派生自ValueType (3)值类型不能继承,只能实现接口 2.值类型:int.char.double.float.lon ...

  6. .NET周刊【3月第4期 2025-03-23】

    国内文章 C# 中比较实用的关键字,基础高频面试题! https://www.cnblogs.com/Can-daydayup/p/18784074 文章探讨了C#编程中的关键字,尤其是访问修饰符的种 ...

  7. Python 潮流周刊第3季总结,附电子书下载

    我订阅了很多的周刊/Newsletter,但是发现它们都有一个共同的毛病:就是缺乏对往期内容的整理,它们很少会对内容数据作统计分析,更没有将内容整理成合集的习惯. 在自己开始连载周刊后,我就想别开生面 ...

  8. [flask]自定义请求日志

    前言 flask默认会在控制台输出非结构化的请求日志,如果要输出json格式的日志,并且要把请求日志写到单独的文件中,可以通过先禁用默认请求日志,然后在钩子函数中自行记录请求的方式来实现. 定义日志器 ...

  9. Spring纯注解的事务管理

    Spring纯注解的事务管理 源码 代码测试 pom.xml <?xml version="1.0" encoding="UTF-8"?> < ...

  10. SpringMVC返回值

    字符串 /** * 测试返回字符串 * @param model model * @return 返回的字符串,通过视图解析器调整到jsp页面 */ @RequestMapping("/te ...