我知道在 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"