2009-07-02 100 views
3

我將編寫Windows服務以將用戶添加到計算機(沒有權限的用戶,即僅用於身份驗證)。 (作爲一個方面說明,我打算使用this method。)從遠程計算機撥打Windows服務

我希望能夠從另一臺計算機調用此Windows服務。

這是如何完成的?這是一個很高的命令嗎?我會更好的創建一個Web服務並將其託管在IIS中嗎?

我在調用計算機上的IIS中託管了一些WCF服務(它們將對建議的Windows服務進行調用)。我發現在IIS中託管有些問題,所以我寧願沒有第二個IIS實例來管理,除非我需要。

(我將使用Visual Studio 2008 SP1,C#和Windows Server 2003(用於調用程序和服務主機)。

感謝您的幫助

回答

3

如果您正在考慮在IIS中託管一個Web服務,只是爲了與同一臺計算機上的NT服務進行通信,那就是肯定是比在這種情況下值得的更麻煩。

正如其他答案已經表明你可以使用你需要的操作來創建一個WCF服務,並將它託管在你想要與之交互的同一個NT服務中。您可以輕鬆地通過證書或用戶帳戶來確保它只受合適的人員/機器控制。

如果您需要控制NT服務本身,現有程序(如sc.exe)可遠程啓動,停止,配置或查詢您的NT服務的狀態。

但是,您可能需要考慮尋求解決方案,而不需要創建自定義NT服務和自定義WCF服務來與之交互。如果這樣做,那麼命令(對不起鏈接 - 新用戶限制)或AddUsers(請參閱kb 199878/en-us)實用程序可能就足夠了。如果您的遠程「控制器」可以直接針對目標機器調用這些命令,則您可能不必創建任何需要的自定義軟件地址。此外,您將擁有更少的軟件來在目標機器上進行維護和管理。您只需使用內置的操作系統功能和管理實用程序。最後,您需要考慮安全方面,NT-services和IIS通常在非常受限制的帳戶下運行,許多審計人員將在具有足夠權限運行的任何服務上進行本地創建或修改用戶的操作,並且特別是在其他機器上。您需要確保該服務永遠不會用於創建超過您指定的「身份驗證」權限的用戶。

編輯:網絡用戶命令可能不會針對另一臺機器的本地用戶,但檢查出來。 pspasswd與PsExec一起創建用戶,應該做你需要的遠程。

1

如果窗口服務發佈一個遠程接口,那麼它可以通過遠程訪問接口訪問

否則,它與訪問在遠程機器上運行的任何其他進程相同,除了可能有一些工具(例如sc)內置支持在遠程機器上執行(禁止防火牆併發症)

任何IPC機制都適用;套接字,網絡服務,遠程處理等...

+0

網絡服務套件命令也通常支持遠程目標 – 2009-07-02 16:13:10

+0

我喜歡這個想法。但遠程處理也有點困難(我只做過一次)。我會嘗試這是在Windows服務中運行WCF不適合我。 – Vaccano 2009-07-02 17:29:46

0

您可以創建一個WCF服務,該服務將與遠程服務器上的Windows服務進行通信。在IIS中託管WCF組件(或者您希望可以與之通信),然後從遠程計算機調用WCF組件。

2

只需在Windows服務中託管WCF服務即可。然後您可以遠程調用它。

2

您可以在Windows服務中託管WCF服務。看看TCP綁定(NetTcpBinding類)。客戶端和服務器都必須使用WCF,但聽起來這不像是你的實現問題。

此外,題爲「在Windows服務託管」在這個MSDN article部分提供了過程

+0

感謝您的額外信息和MSDN文章的鏈接。 – Vaccano 2009-07-02 17:30:44

1

的步行通過你可以直接從你的Windows服務公開的WCF服務。當您啓動Windows服務時,除了啓動其他後臺進程外,您還可以爲您的服務實現創建ServiceHost實例<T>。這將使您不僅可以提供WCF訪問權限,還可以避免IIS請求的額外實例,並提供TCP,命名管道和WsHttp端點。這應該會給你在性能調優領域帶來一些不錯的靈活性,因爲聽起來這個服務將在你的網絡內部而不是外部使用。