3

所以我正在调用一个 PHP 函数来访问 Windows 7 服务的状态,如下所示:

win32_query_service_status($service_name);

在本地安装的 WAMP 实例下运行时,该函数按预期返回一组信息。

在 IIS 下运行时,我返回错误状态 5,根据文档,它对应于以下错误:

WIN32_ERROR_ACCESS_DENIED   0x00000005
The handle to the SCM database does not have the appropriate access rights.

所以使用phpinfo(),我检查运行 PHP 环境的用户名。在 WAMP 站点上时,该服务在我的用户 ID(在 Windows 本地管理员组中)下运行。

在 IIS 版本下,用户是F6729-44TP6S7$(这是我的计算机的名称,后跟一个$)。因此,据推测,解决方案只是授予该用户对 Windows 中的服务控制管理器 (SCM) 的必要权限。

但问题是,我对 IIS(或 Windows)的内部运作了解不足,无法知道该用户 ID 的来源(这意味着我不知道如何授予它必要的权限)。该用户在我的计算机管理控制台中不存在,我也找不到它在 IIS 管理工具中的定义位置。

所以问题是:我需要做什么才能让这个 PHP 函数在 IIS 下运行?如何在 IIS 下向 PHP 管理器授予必要的权限。或者,如何更改运行 PHP 管理器的用户 ID?

4

1 回答 1

3

所以显然这只是一个知道谷歌搜索什么的问题。一旦你知道你在搜索什么,你就更有可能找到它。

https://serverfault.com/questions/232907/wcf-service-hosted-in-iis7-with-administrator-rights

答案是:

在 IIS 管理器中,转到:

网站 > [您的网站]

在 IIS 小节下的“功能”视图中

身份验证 > 匿名身份验证 > [鼠标右键“编辑...”] > 选择:应用程序池标识 [确定]

这允许匿名连接到网站,在操作系统级别以管理员用户身份运行 PHP(和其他 IIS 服务)。

如果有人想复制此答案或在您的答案中添加任何有用的信息以索取赏金,请继续。业力,生命的循环等等。

于 2013-09-25T07:58:04.290 回答