在企业级应用开发中,C# Windows服务监控是一项非常实用的技能。无论是运维人员还是开发者,都需要实时掌握关键服务的运行状态,以确保系统稳定性和业务连续性。本文将从零开始,教你如何使用C#编写一个简单的程序来监控Windows服务的状态,即使你是编程小白也能轻松上手!
Windows服务是在后台运行的长期进程,通常不需要用户交互。例如:SQL Server、Print Spooler、Windows Update等都是常见的服务。它们可以设置为自动启动、手动启动或禁用。
服务一旦意外停止,可能导致业务中断。通过Windows服务状态检测,我们可以及时发现异常并采取措施(如自动重启或发送告警),从而提升系统可靠性。
你需要:
C# 提供了 System.ServiceProcess.ServiceController 类,用于连接和控制 Windows 服务。这是实现 C#服务状态管理 的关键。
以下代码演示如何获取本地计算机上某个服务的状态:
using System;using System.ServiceProcess;class Program{ static void Main(string[] args) { try { // 创建 ServiceController 实例,指定服务名称(不是显示名称!) ServiceController sc = new ServiceController("Spooler"); Console.WriteLine($"服务名称: {sc.DisplayName}"); Console.WriteLine($"服务状态: {sc.Status}"); // 可选:检查是否正在运行 if (sc.Status == ServiceControllerStatus.Running) { Console.WriteLine("✅ 服务正在运行"); } else { Console.WriteLine("⚠️ 服务未运行"); } } catch (Exception ex) { Console.WriteLine($"错误: {ex.Message}"); } }} 注意:服务名称(Service Name)和显示名称(Display Name)不同。例如,“Print Spooler”的服务名称是 Spooler。你可以在“服务”管理控制台(services.msc)中右键查看属性确认。 只需在构造函数中传入远程计算机名即可:
// 监控远程服务器上的 SQL Server 服务ServiceController remoteSc = new ServiceController("MSSQLSERVER", "DB-SERVER-01");Console.WriteLine($"远程服务状态: {remoteSc.Status}"); ⚠️ 注意:远程监控需要目标机器开放相应权限,并且当前用户对远程机器有访问权限(通常需加入域或配置信任关系)。
下面是一个循环监控多个服务的小工具,每5秒检查一次状态:
using System;using System.ServiceProcess;using System.Threading;class ServiceMonitor{ static string[] servicesToMonitor = { "Spooler", "wuauserv", "Dhcp" }; static void Main() { Console.WriteLine("🚀 开始监控服务..."); while (true) { foreach (string serviceName in servicesToMonitor) { try { using (ServiceController sc = new ServiceController(serviceName)) { string status = sc.Status.ToString(); string mark = status == "Running" ? "✅" : "❌"; Console.WriteLine($"{mark} {serviceName}: {status}"); } } catch (Exception ex) { Console.WriteLine($"❌ {serviceName}: 无法访问 ({ex.Message})"); } } Console.WriteLine(new string('-', 40)); Thread.Sleep(5000); // 每5秒检查一次 } }} 通过本文,你已经掌握了使用 C# 进行 .NET服务监控教程 的基础方法。利用 ServiceController 类,你可以轻松实现对本地或远程 Windows 服务的状态查询、启停控制等操作。这项技能不仅适用于运维自动化,也可集成到你的企业应用中,提升系统健壮性。
记住:定期监控关键服务,是保障系统高可用的第一步!
本文由主机测评网于2025-12-23发表在主机测评网_免费VPS_免费云服务器_免费独立服务器,如有疑问,请联系我们。
本文链接:https://www.vpshk.cn/20251211994.html