如何使用C#获取Windows服务的启动类型(替代可视化界面操作)
获取Windows服务启动类型的C#实现方案
嘿,我刚好帮客户处理过类似的需求,不用让他们去折腾Windows服务控制台,用C#代码就能轻松获取服务的启动类型,给你分享两种靠谱的实现方式:
方法一:通过WMI(System.Management)查询
这种方式比较直观,WMI专门提供了Win32_Service类来管理系统服务,能直接拿到启动类型。
步骤:
- 右键你的项目 → 管理NuGet程序包,搜索并安装
System.Management包(或者直接在项目引用里添加System.Management程序集) - 编写代码:
using System; using System.Management; public static string GetServiceStartType(string serviceName) { try { // 构造WMI查询语句,指定要查询的服务名称 string query = $"SELECT StartMode FROM Win32_Service WHERE Name = '{serviceName}'"; ManagementObjectSearcher searcher = new ManagementObjectSearcher(query); foreach (ManagementObject service in searcher.Get()) { // StartMode返回的是字符串,比如"Auto"、"Manual"、"Disabled"等 return service["StartMode"]?.ToString() ?? "未知"; } return "未找到指定服务"; } catch (Exception ex) { return $"查询失败:{ex.Message}"; } } // 使用示例 public static void Main() { string serviceName = "wuauserv"; // Windows更新服务的内部名称 string startType = GetServiceStartType(serviceName); Console.WriteLine($"服务 {serviceName} 的启动类型:{startType}"); }
方法二:读取注册表获取启动类型
如果某些环境下WMI被禁用或者权限受限,直接读取注册表也是个不错的选择。服务的启动类型信息存在HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\[服务名]路径下的Start值里。
代码实现:
using System; using Microsoft.Win32; public static string GetServiceStartTypeFromRegistry(string serviceName) { try { // 打开注册表路径 using (RegistryKey key = Registry.LocalMachine.OpenSubKey($"SYSTEM\\CurrentControlSet\\Services\\{serviceName}")) { if (key == null) return "未找到指定服务"; // 获取Start值,不同数值对应不同启动类型 int startValue = (int)key.GetValue("Start", -1); return startValue switch { 0 => "引导启动", 1 => "系统启动", 2 => "自动", 3 => "手动", 4 => "禁用", _ => "未知" }; } } catch (Exception ex) { return $"查询失败:{ex.Message}"; } } // 使用示例 public static void Main() { string serviceName = "wuauserv"; string startType = GetServiceStartTypeFromRegistry(serviceName); Console.WriteLine($"服务 {serviceName} 的启动类型:{startType}"); }
注意事项:
- 两种方式都需要管理员权限才能正常读取所有服务的信息,所以记得让程序以管理员身份运行
- 服务名称是服务的“内部名称”,不是显示名称,比如Windows更新服务的显示名称是"Windows Update",但内部名称是"wuauserv",可以在服务控制台的“属性”里查看
内容的提问来源于stack exchange,提问作者Dionatas Firmino
相关产品推荐
相关产品推荐

