2009-10-22 175 views
1

我們使用ServiceController對象來查詢我們的Service是否正在運行。我們正在執行查詢的Web應用程序使用模擬進行安全/登錄。在Web應用程序的C#中查詢Windows服務狀態

System.ServiceProcess.ServiceController sc = new System.ServiceProcess.ServiceController("myService"); 
return sc.Status 

使用管理員帳戶,查詢成功。使用有限帳戶(非管理員),查詢失敗,並顯示「服務myService在計算機上未找到」的消息。「」......但這隻在Windows Server 2003中失效,而不在Windows XP中。

我已經谷歌搜索並在MSDN檢查。我沒有發現任何與Windows Server 2003中ServiceController的使用相關的內容。

任何想法?

編輯:如果有一種方法來查詢服務狀態而不使用不涉及「安全」特權的ServiceController,那可能適用於我們。我們只需要獲得服務的狀態。

UPDATE:

我創建了一個簡單的控制檯應用程序將打印服務的狀態。我使用「runas」命令使用管理員和非管理員帳戶運行應用程序。它都在Windows Server 2003中工作......這意味着這是一個權限問題,沒有正確傳遞給Web應用程序中的ServiceController調用?也許IIS安全的東西?

謝謝!

+1

另一種選擇是服務更新數據庫/文本文件,然後從您的Web應用程序中查詢?這樣你永遠不必擔心權限,特別是如果你需要將它移動到另一臺服務器等等。 – seanxe

+0

好的解決方法! – Ian

+0

另一件事是檢查Windows事件日誌以查看是否有任何特定的安全相關消息。 –

回答

0

我認爲web應用程序應該在沙箱中運行。由於安全問題,允許訪問在本地計算機上運行的服務並不是您應該做的事。

也許你可以告訴我們你想做什麼,還有另一種解決方案?