使用非管理员帐户启动httpd作为服务

时间:2012-06-13 13:20:32

标签: windows apache windows-services

我在其C:\Program Files\Apache Software Foundation\Apache2.2下的默认目录中安装了Apache。在安装过程中,创建了服务Apache2.2

当使用 Apache Monitor 应用程序或Windows 服务工具作为具有管理员权限的用户时,我可以毫无问题地启动和停止服务,并且它可以为网站提供服务一切似乎都很好。

出于安全考虑,我想从具有有限权限的用户帐户启动httpd服务器。

在深入研究一些文档并使用ProcessMonitor来调试任何文件和注册表访问问题后,我认为我获得了文件和目录的权限 - 只有少数访问C:\和EventLog的失败尝试启动服务时,注册表项显示在ProcessMonitor中。

然而,它失败并显示错误消息

  

Windows无法在本地计算机上启动Apache2.2。有关更多信息,请查看系统事件日志。 (...)

此事件日志显示以下消息:

  

(20024)给定路径格式错误或包含无效字符:无效的配置文件路径C:\ Program Files \ Apache Software Foundation \ Apache2.2 \ conf \ httpd.conf

由于我读到httpd不接受反斜杠(尽管它们似乎在具有管理员权限的用户启动时起作用),我更改了服务的参数以使用正斜杠,引用,不引用,删除它们,使它们成为可能相对(为了从中移除空格),例如../conf/httpd.conf和其他变体,但到目前为止没有成功。

1 个答案:

答案 0 :(得分:1)

Apache Web服务器似乎遍历从层次结构中C:\开始的所有目录,直到它到达找到httpd.conf的目录。对于这个问题,这些目录是:

C:\
C:\Program Files\
C:\Program Files\Apache Software Foundation\
C:\Program Files\Apache Software Foundation\Apache2.2\
C:\Program Files\Apache Software Foundation\Apache2.2\conf\

要解决此问题,所有这些目录都需要为执行httpd的用户帐户设置列出文件夹内容权限。

它在事件日志中给出的错误消息因此具有误导性,路径是正确的。

为避免更改所有这些文件夹的权限设置,我建议您在C:\的直接子目录中安装Apache,例如C:\Apache2.2\