所以我打電話給一個PHP函數如下訪問Windows 7服務的狀態:提供IIS/PHP權限的Windows服務控制管理器(SCM)
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站點上時,該服務在我的用戶標識下運行(位於Windows本地管理員組中)。
在IIS版本下,用戶爲F6729-44TP6S7$
(這是我的電腦名稱,後跟$
)。因此,推測可能的解決辦法就是在Windows中爲服務控制管理器(SCM)授予該用戶必要的權限。
但問題是,我對IIS(或Windows)的內部工作知之甚少,不知道這個用戶ID來自哪裏(這意味着我不知道如何授予它必要的權限)。該用戶在我的計算機管理控制檯中不存在,我也無法找到它在IIS管理工具中定義的位置。
所以問題是:我需要做什麼才能讓PHP函數在IIS下運行?我如何在IIS下向PHP管理器授予必要的權限。或者,如何更改PHP管理器在其下運行的用戶標識?
我不認爲這是一個有效的解決方案,但如果您沒有其他選擇,您可以使用服務控制器('SC.exe')授予特定用戶/組的權限。您可以使用'sc sdshow'獲得當前的SSDL,然後使用'sc sdset'獲得增加的權限。根據你在做什麼,查詢服務可能只需要訪問'scmanager':'sc sdset scmanager(SSDL)'的權限。 http://technet.microsoft.com/en-us/library/cc742037%28v=ws.10%29.aspx – JoeBilly
[This](http://msdn.microsoft.com/zh-cn/library/aa954062。 aspx)是你的問題的官方文檔 –