簡體   English   中英

從遠程計算機調用Windows服務

[英]Call A Windows Service from a remote computer

我將編寫一個Windows服務來將用戶添加到計算機(沒有權限的用戶,即僅用於身份驗證)。 (作為旁注,我打算使用這種方法 。)

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

這是怎么做到的? 這是一個很高的命令嗎? 我只是創建一個Web服務並在IIS中托管它會更好嗎?

我在調用計算機上的IIS中托管了一些WCF服務(他們將調用建議的Windows服務)。 我發現IIS中的托管有些問題,所以除非我需要,否則我寧願不管理第二個IIS實例。

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

謝謝您的幫助

如果你想在IIS中托管一個Web服務只是為了與同一台機器上的NT服務進行通信,那么在這種情況下,這肯定比它的價值更麻煩。

正如其他答案所示,您可以使用所需的操作制作WCF服務,並將其托管在您要與之交互的同一NT服務中。 您可以使用證書或用戶帳戶輕松保護它,以確保它僅由合適的人員/機器控制。

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

但是,您可能需要考慮尋求一種解決方案,而無需創建自定義NT服務和自定義WCF服務來與其進行交互。 如果這樣做, Net User命令(抱歉沒有鏈接 - 新用戶限制)或AddUsers (請參閱kb 199878 / en-us)實用程序可能就足夠了。 如果您的遠程“控制器”可以直接針對目標計算機調用這些命令,則可能不必創建此需要的任何自定義軟件地址。 此外,您可以在目標計算機上維護和管理更少的軟件。 您只需使用內置的操作系統功能和管理實用程序。

最后,您需要考慮安全方面,NT服務和IIS通常在非常有限的帳戶下運行,許多審計員會翻轉任何運行的服務,並且有足夠的權限在本地創建或修改用戶,特別是在其他機器上。 您需要確保該服務永遠不會用於創建具有超出您指定的“身份驗證”權限的用戶。

編輯: net user命令可能無法對另一台計算機的本地用戶起作用,但請檢查。 pspasswd與PsExec一起創建用戶,應該做你需要的遠程。

只需在Windows服務中托管WCF服務即可。 然后,您就可以遠程調用它。

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

此外,本MSDN文章中標題為“在Windows服務中托管”的部分提供了該過程的演練

如果Windows服務發布遠程接口,則可以通過該遠程接口訪問它。

否則它與訪問遠程計算機上運行的任何其他進程相同,除了可能有一些內置支持對遠程計算機執行的工具(例如sc)(除非防火牆復雜化)。

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

您可以直接從Windows服務公開WCF服務。 當您啟動Windows服務時,除了啟動任何其他后台進程外,您還可以為服務實現創建ServiceHost <T>實例。 這樣您不僅可以提供WCF訪問,還可以避免您請求的額外IIS實例,並提供TCP,命名管道和WsHttp端點。 這應該會為性能調優領域提供一些很好的靈活性,因為聽起來這個服務將在網絡內部使用,而不是在外部使用。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM