如何通过编程判断Windows功能是否已启用?(含代码疑问)
判断Windows可选功能是否启用的解决方案
你遗漏了Win32_OptionalFeature类中的InstallState属性,这个属性的数值对应功能的启用状态,常见取值如下:
- 1:功能已启用
- 2:功能已禁用
- 3:功能已移除
- 4:功能正在安装
- 5:功能正在卸载
修改后的代码可以获取并判断状态:
ManagementClass objMC = new ManagementClass("Win32_OptionalFeature"); ManagementObjectCollection objMOC = objMC.GetInstances(); foreach (ManagementObject objMO in objMOC) { string featureName = (string)objMO.Properties["Caption"].Value; if (featureName.ToLower().Contains("websocket")) { // 获取安装状态 uint installState = (uint)objMO.Properties["InstallState"].Value; string status = installState switch { 1 => "已启用", 2 => "已禁用", 3 => "已移除", 4 => "安装中", 5 => "卸载中", _ => "未知状态" }; Console.WriteLine($"Feature Name: {featureName} | 状态: {status}"); } }
注意:需要确保程序有足够权限访问WMI,否则可能触发权限不足的异常。
内容的提问来源于stack exchange,提问作者Kixoka
相关产品推荐
相关产品推荐

