如何从可执行文件获取 Windows 服务名称(WIndows 7)

如何从可执行文件获取 Windows 服务名称(WIndows 7)

我知道在 Windows 7 下命令行命令...

  • tasklist通过可执行文件名称获取当前正在运行的进程(包括服务)
  • net start显示所有已启动服务的显示名称。(“漂亮”显示名称而不是更短、更没有空间的服务名称

我想在命令行上实现的是

  • 从可执行文件名称(wmiserv.exe)到后面的服务名称
  • 反之亦然(好的,这种方法也可以在 services.msc 面板中完成,查找服务属性)

如果有一个命令可以列出所有内容(可执行文件(可能包括路径)、服务名称、显示名称)并且我可以通过 grep 找到我需要的行,那就太完美了。

如果针对 svchost-Services 适用单独的规则,我不太理解。

例子:我目前正在尝试查找C:\Windows\System32\wmiserv.exe锁定某些文件的服务。在 Google 上搜索此类服务只会得到一堆垃圾搜索和可疑的“下载 FixingTool.exe”。我在 exe 的“属性”对话框中找到的所有信息(假设它在第一个平面中是无害的)听起来都不像我能想到的任何服务名称。

答案1

我没有找到一个突击队员,但能够为你创建一个批处理文件。

将以下代码保存在文件“GetServide.cmd”中并从命令行运行它。

要搜索 wmiservice.exe,语法如下:GetServide.cmd wmiservice.exe

@echo off

REM Syntax: GetService.cmd [keyword]

REM --- Get Keyword ---
Set Keyword=%1

REM --- Get all services ---
for /f "tokens=2" %%a in ('sc query^|find /i "SERVICE_NAME"') do Call :DoSearch %%a
Goto :EOF


REM --- Search Function ---
:DoSearch
  REM --- Set service name, quit if empty ---
  Set FoundOutput=
  Set SrvName=
  Set srv=%1
  if "%srv%"=="" goto :eof

  REM --- Serach keyword in services ---
  for /f %%a in ('sc qc "%1"^|find /i "%keyword%"') do set FoundOutput=%%a

  REM --- If keyword found, display info ---
  if "%FoundOutput%"=="" goto :eof
  ECHO.
  ECHO Service: %srv%
  sc qc "%1"|find /i "BINARY_PATH_NAME"
  sc qc "%1"|find /i "DISPLAY_NAME"

相关内容