所以我正在调用一个 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?