Windows-7

如何從執行檔獲取 Windows 服務名稱(Windows 7)

  • September 7, 2015

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

  • tasklist獲取目前按其可執行名稱執行的程序(包括服務)
  • net start向我顯示已啟動服務的所有顯示名稱。(“漂亮”的顯示名稱,而不是較短的、無空格的服務名稱

我想在命令行上實現的是

  • 從執行檔名(wmiserv.exe)到後面的服務名
  • 反之亦然(好的,這種方式也可以在 services.msc 面板中完成,查找服務屬性)

如果有一個命令,比如說,列出所有內容(執行檔(可能包括路徑)、服務名稱、顯示名稱),我可以用 grep 查找我需要的行,那將是完美的。

如果適用 svchost-Services 的單獨規則,我缺乏理解。

**範例:**我目前正在嘗試查找C:\Windows\System32\wmiserv.exe鎖定某些文件的服務。Google搜尋只會得到一大堆搜尋垃圾郵件和狡猾的“下載 FixingTool.exe”。我在 exe 的“屬性”對話框中可以找到的所有內容(假設它在第一個平面中是 benigm)聽起來不像我能想出的任何服務名稱。

我沒有找到一個突擊隊,但能夠為你製作一個批處理文件。

將以下程式碼保存在文件“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"

引用自:https://serverfault.com/questions/720563