72 lines
2.5 KiB
C#
72 lines
2.5 KiB
C#
using System;
|
||
using System.Collections.Generic;
|
||
using System.ServiceProcess;
|
||
using System.Linq;
|
||
using System.Text;
|
||
using System.Threading.Tasks;
|
||
using System.IO;
|
||
using COMMON;
|
||
|
||
namespace SERVER.LIB
|
||
{
|
||
public class TestingServices
|
||
{
|
||
public static object lockers = new object();
|
||
/// <summary>
|
||
/// 检测本机指定服务 仅仅 windows
|
||
/// </summary>
|
||
/// <param name="type">0 只是返回状态 1 启动 2 重启 3 停止</param>
|
||
/// <param name="name">名字</param>
|
||
/// <returns>0 不存在 2 未运行 1 已经运行</returns>
|
||
public static int ISok(string name = "", int type = 0)
|
||
{
|
||
try
|
||
{
|
||
|
||
|
||
#region RuntimeInformation.IsOSPlatform(OSPlatform.Windows)
|
||
//获取指定服务,若服务状态不是Runing就Start该服务
|
||
#pragma warning disable CA1416 // 验证平台兼容性
|
||
var server = ServiceController.GetServices().FirstOrDefault(service => service.ServiceName == name);
|
||
if (server == null)
|
||
{
|
||
return 0;
|
||
}
|
||
if (type != 0)
|
||
{
|
||
lock (lockers)
|
||
{
|
||
string path = Directory.GetCurrentDirectory() + "\\App_Data\\Server";
|
||
Directory.CreateDirectory(path);
|
||
|
||
switch (type)
|
||
{
|
||
case 1:
|
||
if (server.Status != ServiceControllerStatus.Running)
|
||
{
|
||
File.WriteAllText(path + "\\Server.xcljj", type.ToString());
|
||
}
|
||
break;
|
||
case 2:
|
||
File.WriteAllText(path + "\\Server.xcljj", type.ToString());
|
||
break;
|
||
case 3:
|
||
File.WriteAllText(path + "\\Server.xcljj", type.ToString());
|
||
break;
|
||
}
|
||
}
|
||
}
|
||
|
||
//开启后再检测一次
|
||
return type != 0 ? ISok() : (server.Status == ServiceControllerStatus.Running ? 1 : 2);
|
||
#endregion
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
LogHelp.Error("服务操作失败!" + ex.ToString());
|
||
return 0;
|
||
}
|
||
}
|
||
}
|
||
}
|