2010-11-15 57 views
3

當我沒有以管理員身份運行時,是否有一種在.Net中開發服務的簡單方法?我遇到了一些問題。首先,在調試時,不能只從Visual Studio中按F5,因爲它說服務必須首先安裝,然後從服務管理員工具運行。問題是沒有管理員權限,我無法創建或控制服務。我們使用Windows Server 2008和AD來管理我們的用戶。是否有一組特定的權限可供用戶使用,以便他們可以添加/刪除/啓動/停止服務?如果我們只想讓開發人員訪問他們自己創建的服務,會怎樣另外,一旦服務正在運行,調試它的最佳方式是什麼。假設服務已經啓動並且已經在運行,Visual Studio可以連接到已經運行的進程,是否有更好的方法,以便從服務的入口開始調試?如何在沒有以管理員身份登錄時開發.Net服務

回答

1

我在處理服務時傾向於做的一件事是創建一個控制檯應用程序以在開發過程中運行代碼。這意味着您必須將該服務作爲執行該工作的代碼的薄層,因此您可以從您的控制檯應用程序調用該代碼,但這不是一個壞主意。

我知道這並不完全回答你的問題,但希望可能會有所幫助!

+0

這是一個好主意,但它也可以調試服務本身,因爲它可能在內置或不同的用戶帳戶下運行。 – 2010-11-15 16:01:36

1

您的用戶需要作爲服務登錄的權限。

使用管理工具,本地安全策略,本地策略,用戶權限分配。

將您的用戶添加到「作爲服務登錄」列表中。

您無法將此權限限制爲特定服務。

對於調試 - 我曾經使用過的一個技巧是在早期邏輯中添加Sleep(20000);以使調試器有時間連接。您必須確保您的服務始終告知Service Control Maanger它處於清醒狀態(ServiceStatus = SERVICE_START_PENDING),否則它將被視爲死亡並被殺死。

1

Kibbee,

這實際上是一個我遇到過自己的問題。解決Visual Studio問題的最簡單方法是創建一個適用於服務級別頂部的應用程序。這可能是一個簡單的控制檯應用程序,使得調用與服務相同。如果正確完成,這將與服務完全一樣,而不是真正的服務,這將允許開發人員進行正確的測試和調試。

實際上,您可以讓用戶無需管理員即可運行服務,現在無論您是否可以將它們隔離到特定服務,我都不確定。

+0

我想過這個。創建一個能夠啓動/停止「服務」的小型GUI並不難,並且還會顯示從服務發回的消息(通過註冊事件)。我想我可能會朝這個方向發展,因爲它似乎使開發變得更容易,而不會給用戶更多的權利。 – Kibbee 2010-11-15 16:23:07

+0

@Kibbee這是基本的想法。我寫的大多數服務都是從其他庫中運行代碼,而實際服務本身只有很少的代碼。 – msarchet 2010-11-15 16:26:12

相關問題