2014-04-17 159 views
0

我有一個奇怪的問題。管理員和在Windows上擁有「管理員權限」是否有區別?

我正在使用由我和第三方編寫的Windows軟件。

第三方創建了一個安裝程序。該安裝程序以編程方式運行請求管理權限。該安裝程序還將Apache安裝爲Windows服務。由於安裝程序使用管理權限運行,因此我們預計Apache Windows服務將以管理權限運行。

我們看到的問題是,我們從運行在Apache上的php腳本獲得不同的結果,具體取決於Apache的啓動方式。

如果Apache作爲Windows服務運行,通過上面提到的安裝程序安裝,我們得到了錯誤的結果。如果Apache從cmd提示符(以User Administrator開始)啓動,那麼php腳本會給出正確的結果。

任何人都可以提出什麼可能會出錯嗎?

注意: php腳本運行CutyCapt.exe(一個捕獲實用程序的網站)。

+0

首先要做的是檢查服務配置使用哪個帳戶。您可以在命令行上使用'sc'或使用GUI管理工具'services.msc'來執行此操作。 –

回答

0

安裝程序需要管理員權限才能修改系統(例如寫入所有用戶共享的HKLM註冊表項)。 這並不意味着安裝程序會將正在安裝的服務配置爲在具有管理權限的帳戶下運行。

從命令行啓動的服務和「正常」應用程序之間有一個很大的區別,就是服務無法訪問可能顯示某些消息的「屏幕」。而且服務不能訪問一些常見的地方,如用戶臨時文件存儲等,因爲它們在具有「無用戶登錄」類型的環境中運行。

如果不知道更準確地知道什麼是您收到的「錯誤結果」,問題究竟是什麼不能被猜出。

這個Starting a Windows service in an interactive session答案可能會提供一些額外的提示。

我首先檢查phpinfo()和環境變量,然後檢查CutyCapt.exe的需求。例如用戶的臨時文件存儲不能被默認訪問並且註冊表值不能被自由讀取的事實是我已經看到的一個問題

對於具有0-問題的Windows + Apache + MySQL + PHP安裝程序,我建議Bitnami的WAMP棧https://bitnami.com/stack/wamp,自包含的,便攜式的風格

1

阿帕奇服務,不管它是如何安裝的,總是在「本地系統」帳戶啓動(除非你改變它之後)。

另一方面,當您通過命令行啓動Apache 進程時,它會在運行命令行(cmd.exe)的同一帳戶下啓動。

我的猜測是,LocaSystem無法訪問此應用可能需要的桌面,或者它無法執行該exe ...檢查Apache和PHP的錯誤日誌。同時檢查Windows事件日誌。

0

我upvoted權利的答案。還有一件事要嘗試。轉到控制面板=>管理工具=>服務。(或者按WIN + R打開運行對話框後鍵入「services.msc」。)

從服務管理屏幕上,右鍵單擊Apache服務。然後轉到LogOn選項卡。指定您希望服務在其下運行的帳戶和密碼。