c# - 以编程方式检查 Windows 服务是否正在运行 C#

标签 c#

我正在编写一个应用程序来检查是否安装了某些软件。我的一个案例是在寻找服务。我知道服务的完整路径。即“c:\somefolder\MyService.exe”我想检查该服务是否已安装并正在运行。我尝试过 process.GetProcessbyName,但遇到了 64 位与 32 位进程的问题。我也尝试过 ManagementObject,但我不断收到无效的对象路径。是否可以让服务只知道可执行文件的路径?

我只知道可执行文件的名称和路径。可执行文件也可能有多个版本,每个版本都有不同的服务名称,而我没有。

最佳答案

这里是如何检查服务是否安装,以及获取服务的状态

public static string CheckService(string ServiceName)
        {
            //check service
            var services = ServiceController.GetServices();
            string serviceStatu = string.Empty;
            bool isServiceExist = false;
            foreach (var s in services)
            {
                if (s.ServiceName == ServiceName)
                {
                    serviceStatu = "Service installed , current status: " + s.Status;
                    isServiceExist = true;
                }


            }

            if (!isServiceExist)
            {
                serviceStatu= "Service is not installed";
            }

            return serviceStatu;
        }

Console.WriteLine(CheckService("服务名称"));

您需要将System.ServiceProcess添加到项目引用

关于c# - 以编程方式检查 Windows 服务是否正在运行 C#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46572610/

相关文章:

c# - 如何使用 C# 代码检索 MySql 数据库中的时间

c# - 使用 Code First 方法中的 Id 从数据库上传、保存和检索图像

c# - 为什么我无法从资源中获取自定义字体?

c# - 在字段具有值之前拒绝使用方法

c# - 从同步代码调用异步方法并阻塞直到任务完成的正确方法是什么?

c# - 系统无法读取我的图片上传文件(?)

c# - 方法在 3310 次成功后失败

c# - 重构设计模式 : applying adapter pattern to 3rd party API

c# - 如何使用C# Graph SDK批量删除Office365中的事件

c# - 找到最好的区间匹配结果