Windows 系统服务

admin 2024年1月8日23:56:41评论19 views字数 3086阅读10分17秒阅读模式

在 services.msc 服务窗口中可以找到大部分 Windows 系统服务。这些服务有些是必须的,有些则可以有选择地停掉来节省系统资源:

  • Print Spooler (Spooler): 如果你不使用打印机,可以将其停止。

  • Windows Search (WSearch): 如果你不需要文件搜索服务,可以停止。

  • Bluetooth Support Service (bthserv): 如果你的计算机没有蓝牙设备,可以停止。

  • Windows Time (w32time): 如果不需要通过网络同步时间,可以停止。

  • Remote Registry (RemoteRegistry): 如果不需要远程注册表访问,可以停止。

  • Windows Update (wuauserv): 在某些情况下,用户可能选择手动管理更新而不依赖于Windows更新服务。

  • Windows Error Reporting Service (wermgr): 如果你不希望将错误报告发送到Microsoft,可以停止。

  • Windows Defender Antivirus Service (WinDefend): 如果你使用其他杀毒软件,可以停止Windows Defender服务。

通过命令行可以对这些服务进行启动或停止:

d:> net start spoolerPrint Spooler 服务正在启动 .Print Spooler 服务已经启动成功。

d:> net stop spoolerPrint Spooler 服务正在停止.Print Spooler 服务已成功停止。

Windows 中有哪些服务,如何查看这些服务的状态?

通过命令行可以对一些基本服务进行管理,比如以下命令可以简要地列出哪些服务正在运行:

d:> net start已经启动以下 Windows 服务:
Agent Service Application Identity Application Information AVCTP 服务 Background Intelligent Transfer Service Background Tasks Infrastructure Service Base Filtering Engine Certificate Propagation CNG Key Isolation

以上命令列出的是服务的描述名,而不是服务的真实名称。我们无法通过描述名来对服务进行启停。如果要查询服务的真实名称,可以通过 sc 命令:

d:> sc query
SERVICE_NAME: AppIDSvcDISPLAY_NAME: Application Identity TYPE : 30 WIN32 STATE : 4 RUNNING (STOPPABLE, NOT_PAUSABLE, ACCEPTS_SHUTDOWN) WIN32_EXIT_CODE : 0 (0x0) SERVICE_EXIT_CODE : 0 (0x0) CHECKPOINT : 0x0 WAIT_HINT : 0x0
SERVICE_NAME: AppinfoDISPLAY_NAME: Application Information TYPE : 30 WIN32 STATE : 4 RUNNING (STOPPABLE, NOT_PAUSABLE, IGNORES_SHUTDOWN) WIN32_EXIT_CODE : 0 (0x0) SERVICE_EXIT_CODE : 0 (0x0) CHECKPOINT : 0x0 WAIT_HINT : 0x0

通过 sc 命令加条件可以查询停止运行的服务或所有状态的服务:

d:> sc query state=inactived:> sc query state=all

命令 sc 显示的服务名以及显示名比较长,我们通过  python 将关键信息过滤出来:

#!python3
import win32servicefrom pprint import pprint

def format_string_with_padding(input_string, desired_length): # 使用字符串的format方法进行格式化 formatted_string = "{:<{}}".format(input_string, desired_length) return formatted_string

# Open the Service Control Managersc_manager = win32service.OpenSCManager(None, None, win32service.SC_MANAGER_ENUMERATE_SERVICE)
# Enumerate service statusservice_status = win32service.EnumServicesStatus(sc_manager, win32service.SERVICE_WIN32, win32service.SERVICE_STATE_ALL)
#pprint(service_status)
# Close the Service Control Managerwin32service.CloseServiceHandle(sc_manager)
# Extract and print running service namesrunning_services = [service[0] for service in service_status if service[2][1] == win32service.SERVICE_RUNNING]stopped_services = [service[0] for service in service_status if service[2][1] == win32service.SERVICE_STOPPED]
print()print("All Services:")print("="*30)for s in service_status: if s[2][1] == win32service.SERVICE_RUNNING: print('Rt', format_string_with_padding(s[0],30),"t", s[1]) if s[2][1] == win32service.SERVICE_STOPPED: print('St', format_string_with_padding(s[0],30),"t", s[1])
print()print("Running Services:")print("="*30)for service_name in running_services: print(service_name)

print()print("Stopped Services:")print("="*30)for service_name in stopped_services: print(service_name)

以上代码将所有服务的状态都分组打印出来,其中运行状态的服务以 R 开头,停止运行状态的服务以 S 开头。

程序执行结果如下:

Windows 系统服务

在运行 python 代码前需要先安装 pywin32 模块。通过 pywin32 下的 win32service 模块显示的系统服务远比在 services.msc 中显示的多。有些系统服务并没有在 services.msc 中显示,但是可以用 net stop 对其进行操作。

并非所有服务都可以手动停止,有些系统服务当使用 net stop 停止后会重新启动。这些与服务的属性以及相互依赖有关,有依赖关系的服务会被其它服务自动启起来。

注意

所有与系统服务相关的命令或程序都需要在管理员权限下执行。

全文完。

如果转发本文,文末务必注明:“转自微信公众号:生有可恋”。

       

原文始发于微信公众号(生有可恋):Windows 系统服务

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年1月8日23:56:41
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   Windows 系统服务http://cn-sec.com/archives/2373657.html

发表评论

匿名网友 填写信息