2010-02-12 38 views
0

我想創建一個在用戶可以登錄之前啓動的Windows服務。我希望它在登錄之前啓動,這樣我就可以從組中刪除一個用戶(Windows用戶)(HomeUser是精確的),所以我不必重新登錄。在登錄前啓動服務並從組中刪除用戶

所以我想:

  1. 創建開始之前用戶可以登錄
  2. 從組中刪除用戶的服務。

任何想法如何可以在C#中完成?

編輯

對於質詢的一部分-2;在這裏你如何能做到這一點的鏈接:http://msdn.microsoft.com/en-us/library/system.directoryservices.accountmanagement.groupprincipal.members.aspx

+0

不確定您是否可以使用「RunOnce」註冊表項來執行此操作。我認爲這與在運行維護時正在使用的Windows隊列文件被刪除相似。否則,只需修改其中一項服務以「依賴」您的服務。哈克和風險雖然。 – 2010-02-12 18:39:13

+0

是的,我也在考慮這樣做,但我想要這樣做是正確的。 – ata 2010-02-12 18:46:32

回答

1

如何做到這一點:

使用Windows Service(不WCF服務!)項目在Visual Studio類型。

將您的實施置於OnStart´ method. Add a projectInstaller and configure it to install the service in the Started模式。

編譯你的項目,你的projects.exe運行`installutil.exe -i'

這應該安裝你的服務,並於下次開機時有它開始。

爲什麼這樣做?:

TBH,它的聲音,我喜歡的事,做一次,而不是每次啓動'removing從group'用戶。除非其他人將用戶放回組中,否則它將保持您最後一次設置的方式。因此,每次冷啓動都會變得多餘。

還記得,修改安全設置是一個相當高的特權。沒有多少帳戶可以做到這一點。確保您的服務安裝了具有這些級別許可的身份。

+0

移除用戶部分;我正在提供這項服務,所以我不必每次都刪除用戶。我不知道爲什麼,但當我重新啓動時,Windows將用戶重新分組。 – ata 2010-02-12 19:12:34

+0

只是一個奇怪的想法,但它有什麼辦法可以防止Windows將該用戶放入組中?還是你綁定到一個域控制器這樣做?我認爲最好避免這個問題發生,而不是試圖在事後扭轉它。是否有更多信息可以/可以/願意給用戶帳戶?聽起來像'家庭'方向必須有解決方案。 – 2010-02-12 19:24:57

+0

剛剛在HomeUsers小組上完成了一些閱讀。乍一看,它似乎與Samba和相關主題的聯網。但是碰到我的是GPO的提及。這將是'在'用戶被允許登錄之前'執行功能'的'正確'方法。至少,這就是你可以在域中使用它的東西。如果這是真的,那麼我會建議設立一個GPO,他會從你的組中移除你的用戶。退房 http://technet.microsoft.com/en-us/library/cc766208%28WS.10%29.aspx(vista版本)。也許你將用戶插入HomeUsers組本身就是一個GPO! – 2010-02-12 19:40:37

1

開始在開機的東西任何服務可以做到的,只要它不需要任何GUI操作。它是服務的啓動選項之一。只要這樣設置,你就可以走了。

至於使C#程序成爲服務,我不太確定。也許他們有一些東西,但我想你至少需要將它包裝在一些非託管的C++中,以便與Windows Service API接口。

+0

我確實知道如何創建一個服務,但並沒有任何想法如何在用戶登錄之前啓動它。 – ata 2010-02-12 18:45:17

+0

好。它*有點*從你提出問題的方式看待這種方式,但我不確定。 – 2010-02-12 20:13:55

相關問題