在 CMD 中获取 httpd.exe 的位置

在 CMD 中获取 httpd.exe 的位置

当我们在 Windows 机器上启动 Apache 时,httpd.exe启动其进程。
现在我们可以httpd.exe使用此命令确定进程是否正在运行:

query process httpd.exe

这将返回如下内容:

 USERNAME        SESSIONNAME      ID    PID    IMAGE
 >system         services         0    3340   httpd.exe
 >system         services         0    4720   httpd.exe

httpd.exe现在,是否可以通过 cmd 中的 windows 命令来获取位置?
?该命令应返回此(位置httpd.exe

E:\Installed Softwares\wamp\bin\apache\apache2.4.9\bin\httpd.exe

答案1

我不确定我是否明白你的意思,但如果你想在命令您可以使用在哪里命令(它仅在当前目录和路径中搜索)但你可以添加一些参数。例如,如果我搜索 java.exe

Microsoft Windows [Version 6.0.6002]
Copyright (c) 2006 Microsoft Corporation.  All rights reserved.

C:\Users\Administrator>where java.exe
C:\Windows\System32\java.exe
C:\Program Files\Java\jdk1.6.0_26\bin\java.exe

编辑:您应该尝试递归搜索,它会给您位置,但只有当文件位于同一分区时它才对我有用。

C:\Users\Administrator>where /r c:\ thunderbird.exe
c:\Program Files\Mozilla Thunderbird\thunderbird.exe

答案2

您可以使用 WMI 来执行此操作。
我们需要为调用以下进程构建 WQL 查询:执行程序,我们想要获取可执行文件的启动路径。
此信息保存在Win32_进程类,文档向我们展示了我们需要提供哪些信息(例如姓名)以及要请求哪些位(例如可执行文件路径)。

我们可以用执行程序像这样查询 WMI:

wmic process WHERE name="httpd.exe" GET ExecutablePath  

这应该输出类似以下内容的内容:

C:\Apps\httpd.exe
C:\Apps\httpd.exe
C:\Apps\beta-test\httpd.exe  

你可能想要获得命令行,而不是可执行文件路径,因为这还将告诉您该进程是使用哪些命令行参数启动的,当您缩小哪些进程正在执行什么操作的范围时,这可能会产生很大的不同:

wmic process WHERE name="httpd.exe" GET CommandLine  

这应该会向你显示类似这样的内容:

C:\Apps\httpd.exe -config=E:\widgetsales\httpd.conf
C:\Apps\httpd.exe -config=E:\widgetservices\httpd.conf
C:\Apps\beta-test\httpd.exe -config=D:\DevStuff\httpd.conf  

我们可以做得更好,通过获得PID以及命令行:

wmic process WHERE name="httpd.exe" GET CommandLine, ProcessID 

CommandLine                                                    ProcessId
C:\Apps\httpd.exe -config=E:\widgetsales\httpd.conf            51064
C:\Apps\httpd.exe -config=E:\widgetservices\httpd.conf         24716
C:\Apps\beta-test\httpd.exe -config=D:\DevStuff\httpd.conf     52728  

相关内容