2010-04-09 94 views
1

我最近正在使用Symantech的一種名爲Norton EndPoint保護的產品。它由一個服務器控制檯應用程序和一個部署應用程序組成,我想將他們的部署方法合併到我的一個產品的未來版本中。RPC命令啓動軟件安裝

部署應用程序允許您選擇運行Win2K,WinXP或Win7的計算機工作站。工作站的選擇由AD(Active Directory)或NT Domain(WINs/DNS NetBIOS查詢)提供。從列表中,您可以點擊並選擇部署Symantech病毒&間諜軟件保護套件的端點軟件。

然後,在選擇哪些工作站應該收到軟件包後,軟件將setup.exe程序複製到每個工作站(假設通過管理共享\ pcname \ c $),然後命令工作站執行setup.exe,安裝軟件的工作站。

我真的很喜歡他們的產品如何工作,但不知道他們在做什麼來完成所有步驟。我還沒有對此進行深入的調查,比如嗅探網絡等等,並想在這裏查看是否有人熟悉我在說什麼,如果你知道它是如何完成的,或者有想法如何可以完成。

我的想法是,他們使用管理員共享將軟件複製到選定的工作站,然後發出RPC調用來命令工作站執行安裝。

有趣的是,工作站在沒有任何登錄用戶知道發生了什麼事情的情況下執行此操作,直到需要重新啓動的最後。在這一點上,用戶會得到一個彈出窗口,要求現在或稍後重新啓動,等等......我的預感是setup.exe程序正在彈出此消息。

重點:我正在尋找一種基於Windows的機器可以告訴其他人執行一些操作或運行某個程序的機制。

我的編程語言是C/C++

任何想法/建議讚賞。

+0

在使用DameWare工具 – topherg 2015-02-10 19:50:44

回答

3

我也在研究這個,因爲我也想遠程部署軟件。我選擇了數據包嗅探pstools,因爲它已證明在這種遠程管理任務中相當可靠。

我必須承認我絕對是在過度思考這個挑戰。你現在可能已經完成了你的數據包嗅探,並發現了與我相同的事情。我希望通過離開這個帖子,我們可以協助其他開發者。

這是pstools如何實現執行任意代碼:

它複製的系統服務可執行到\\ server \ ADMIN $(你要麼必須已經在遠程計算機上的本地管理員,或提供憑據)。一旦文件被複制,它就使用服務控制管理器API將複製的文件作爲系統服務並啓動它。

很明顯,這個系統服務現在可以做任何想做的事情,包括綁定到RPC命名管道。在我們的例子中,系統服務將安裝msi。要獲得成功安裝的確認,您可以遠程輪詢註冊表項或rpc函數。無論哪種方式,你應該刪除系統服務,當你完成並刪除文件(psexec不這樣做,我想他們不希望它被偷偷地使用,在這種情況下,留下服務至少會給一個管理員有機會認識到某人已經損壞了他們的盒子)。這種方法不需要對遠程機器進行任何預配置,只需擁有管理員權限並且文件共享和rpc在防火牆中打開即可。

我在使用WMI的C#中看過演示,但我不喜歡這些解決方案。文件共享和RPC最有可能在防火牆中打開。如果不是,遠程服務器的文件共享和遠程MMC管理將不起作用。 WMI可以被阻止並仍然保持這些功能。

我和很多遠程安裝的軟件一起工作過,其中很多軟件都不如pstools可靠。我的猜測是,這是因爲這些開發人員正在使用其他方法,不太可能在防火牆級別打開。

簡單的解決方案往往是最難以捉摸的。與往常一樣,我的帽子已交給SysInternals人員。他們是真正的黑客,正面的,老派的意思是這個詞!

0

產品LANDesk和Altiris也提供此類功能。您需要在客戶端監聽來自服務器的指令/連接的守護進程偵聽器。一旦建立連接,可能會發生許多事情:您可以通過透明方式傳輸文件,啓動安裝腳本等,以便透明地訪問該文件夾中的任何用戶。

我已經使用Twisted Framework(http://twistedmatrix.com)在少量的Linux機器上執行此操作。它是Python和Linux,而不是Windows,但前提是相同的:偵聽客戶端接受來自服務器的指令並執行它們。很簡單。

此功能也可以在基於Windows的域中使用VB/Powershell腳本完成。

+0

後有完全相同的問題,這就要求客戶端先前已經收到了監聽者。賽門鐵克產品不需要事先安裝任何客戶端。賽門鐵克部署顯然是利用了Microsoft Windows功能,我現在假設這是RPC或其他一些方法,例如遠程服務安裝,而後者又被用於調用執行setup.exe程序複製。 – Eric 2010-04-09 18:14:28