2013-09-22 81 views
3

所以我打電話給一個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管理器在其下運行的用戶標識?

+0

我不認爲這是一個有效的解決方案,但如果您沒有其他選擇,您可以使用服務控制器('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

+2

[This](http://msdn.microsoft.com/zh-cn/library/aa954062。 aspx)是你的問題的官方文檔 –

回答

2

所以顯然這只是一個知道什麼google的問題。一旦你知道你在尋找什麼,就更有可能找到它。

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

答案是:

在IIS管理器,請訪問:

Sites > [Your Website]

在 「功能」 下的IIS款

Authentication > Anonymous Authentication > [right-mouse "Edit..."] > Select: Application Pool Identity [OK]

這使得圖匿名連接到網站,以管理員身份運行PHP(和其他IIS服務)呃在OS級別。

如果有人想複製這個答案或添加任何有用的信息到您的答案要求賞金,然後繼續。噶瑪,生命的圈子,等等。

相關問題