对于我正在编写的Windows脚本,我需要检测机器是否安装了Apache 2.2,并find应用程序path。
我想到的一个解决scheme是wget http:// localhost:8080 / server-info ,并从中parsing根和configuration文件。 如果服务器不使用端口8080,这将失败
另一个select是调用“sc qc Apache2.2”并parsing返回的string。 如果服务器不作为服务安装,或者使用不同的名称,则会失败。
有没有更好的方法来做到这一点?
如果没有使用安装程序进行安装,没有太多好的选择。 如果他们使用MSI /安装程序,则可以检查注册表:
HKEY_LOCAL_MACHINE\SOFTWARE\Apache Software Foundation\Apache\2.2.2\serverRoot HKEY_CURRENT_USER\SOFTWARE\Apache Software Foundation\Apache\2.2.2\serverRoot
您也可以检查正在运行的进程列表:
WMIC PROCESS get Caption,Commandline,Processid
寻找适当的EXE。 如果由于某种原因需要端口号,请使用netstat并搜索适当的端口。
此外,当你说“一个Windows脚本”,我假设你正在使用一些现代和功能像Windows脚本主机 (我最喜欢)或PowerShell 。 不要打扰批处理文件。
我记得,Apache写了一些注册表项。 如果你知道如何从脚本中读取它们,这可能会有所帮助。