C# 启动windows 服务(通过cmd管理员方式和winform 方式)
{
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 方式)的更多相关文章
- 使用.NET Core中创建Windows服务(一) - 使用官方推荐方式
原文:Creating Windows Services In .NET Core – Part 1 – The "Microsoft" Way 作者:Dotnet Core Tu ...
- 使用.NET Core创建Windows服务(一) - 使用官方推荐方式
原文:使用.NET Core创建Windows服务(一) - 使用官方推荐方式 原文:Creating Windows Services In .NET Core – Part 1 – The &qu ...
- 网页启动Windows服务
如何在网页启动Windows服务 由于公司有许多windows服务进行业务的处理,所谓对服务的维护也是一个比较头痛的问题,因为自己也不知道服务什么时候自动停了,而且更主要的原因是服务都是由运维部门 ...
- c#启动windows服务问题总结
程序以管理员权限运行的原因 在Vista 和 Windows 7 及更新版本的操作系统,增加了 UAC(用户账户控制) 的安全机制,如果 UAC 被打开,用户即使以管理员权限登录,其应用程序默认情况下 ...
- 如何在网页启动Windows服务
由于公司有许多windows服务进行业务的处理,所以对服务的维护也是一个比较头痛的问题,因为自己也不知道服务什么时候自动停了,而且更主要的原因是服务都是由运维部门在维护管理,开发这边没有直接操作服务的 ...
- Windows服务中用Timer和线程两种方式来执行定时任务
在Service服务文件夹下新建Windows服务 - TestService
- 启动windows服务的bat文件编写格式
1.bat文件需要和bin文件内容放在一起 启动服务的bat文件如下: sc create 邮件服务 binPath= "%~dp0可执行文件名称.exe" start= auto ...
- 启动Windows服务
实现效果: 知识运用: ServiceController类的ServiceName Status属性 public string ServiceName {get; set;} //对此Servic ...
- Windows Service 学习系列(二):C# windows服务:安装、卸载、启动和停止Windows Service几种方式
一.通过InstallUtil.exe安装.卸载.启动.停止Windows Service 方法一 1.以管理员身份运行cmd 2.安装windows服务 切换cd C:\Windows\Micros ...
- 无法从命令行或调试器启动服务,必须首先安装Windows服务(使用installutil.exe),然后用ServerExplorer、Windows服务器管理工具或NET START命令启动它
无法从命令行或调试器启动服务,必须首先安装Windows服务(使用installutil.exe),然后用ServerExplorer.Windows服务器管理工具或NET START命令启动它 1. ...
随机推荐
- 【Python】Python环境安装与简单代码运行
Python环境安装与简单代码运行 视频教程链接:https://www.bilibili.com/video/BV1KG4y1t7dM/ 一.配置Python环境 1.下载Python安装包 建议使 ...
- study Rust-8【使用结构体的方法】
1.方法 与函数类似:它们使用 fn 关键字和名称声明,可以拥有参数和返回值,同时包含在某处调用该方法时会执行的代码.2.不过方法与函数是不同的,因为它们在结构体的上下文中被定义(或者是枚举或 tra ...
- MCP技术:渗透测试从自动化到智能化
在人工智能快速发展的今天,如何让AI更高效地与现实世界交互,成为许多开发者和研究者关注的焦点.MCP(Model Context Protocol)技术作为一种创新的工具集成方案,为AI提供了一种&q ...
- js判断iOS还是Android
/** * 运行设备引擎, 即iOS, Android还是H5 * 返回值注意大小写 * @return iOS, Android, H5 */ function engineType() { let ...
- C# 拓展方法( 一)
总结:用处在不破坏原有类封装的情况下给它添加新的方法,这样可以不需要修改这个类的源代码,也不需要再另外的继承一个类添加方法. C#中的扩展方法及用途 - 森大科技 - 博客园 (cnblogs.com ...
- Python3_模块(一)
脚本是用 python解释器来编程,如果从 Python解释器退出再进入,那么你定义的所有的方法和变量就都消失了.为此 Python提供了一个办法,把这些定义存放在文件中,为一些脚本或者交互式的解释器 ...
- TreeSet练习 根据字符串长度排序
String类已经实现了Comparable接口,我们可以根据TreeSet提供的构造器传入自己的比较器. public class Set4 { public static void main(St ...
- vue3 基础-单项数据流
本篇还是了解关于组件间传值, 核心点是了解子组件只能接收父组件传递的数据而不能反向修改从而影响到其他组件造成的混乱局面. 传多值的问题 当我们要传递数据很多的时候, 可以将数据都存在一个对象中, 直接 ...
- AMQP 和 JMS的区别
MQ是消息通信的模型:实现MQ的大致有两种主流方式:AMQP.JMS. 1.2.1. AMQP AMQP是一种协议,更准确的说是一种binary wire-level protocol(链接协议).这 ...
- WPF应用启动时,检测触摸失效的几种方式
在开发OPS项目,发现插拔式的OPS在切换系统.开关机.重启,会时不时出现部分WPF开机自启的 应用触摸失效的问题.而且出现问题的应用都是全屏窗口应用.用snoop 附加上去,没有Touch 和Sty ...