我在Windows下使用Dev-C++。我的問題是如何在遠程機器上啓動進程?我知道PsExec可以做到這一點,但如果可能的話,我想避免使用它。 如果有人可以舉一些例子的代碼,我將不勝感激:)如何在Windows下的C++中的遠程計算機上啓動進程
在此先感謝!
kampi
我在Windows下使用Dev-C++。我的問題是如何在遠程機器上啓動進程?我知道PsExec可以做到這一點,但如果可能的話,我想避免使用它。 如果有人可以舉一些例子的代碼,我將不勝感激:)如何在Windows下的C++中的遠程計算機上啓動進程
在此先感謝!
kampi
如果這很簡單,黑客將啓動對暴露到互聯網的所有計算機的惡意軟件。
PSExec通過LAN使用服務控制管理器從'here'(即運行它的機器)啓動服務EXE。它需要很多安全特權 - 例如管理員權限。
如果您不想這樣做,您可以查看SSH(有開源示例)或遠程命令提示符(在Windows資源工具包中)。
如果你已經有一臺服務在遠程機器上運行,你可以要求運行一個程序,那將是最好的。 Windows本身並沒有提供任何有用的東西,它確實附帶了一個遠程外殼服務(通常已停用或未安裝)。
IIUC,做什麼PSEXEC是這樣的:
如果你不想使用psexec,你仍然可以這樣做。請注意,您需要相當一些特權才能這樣做。
這有點太多了:)那麼,你能否給我一個例子,該怎麼做?我不是一個專業的程序員,C++只是我的興趣所在。不幸的是,我不知道,我應該使用哪種API。你能幫我多一點嗎? Thx提前! – kampi 2009-10-12 17:17:11
簡單的答案是,你不能。你所能做的就是發送一條消息給遠程機器,要求它爲你啓動進程。 PsExec在遠程機器上運行,監聽特定的消息並啓動進程以響應它們。
您可以使用現有的協議,如PsExec或創建自己的協議。創建你自己的需要你可以在遠程機器上安裝一個服務。如果遠程機器不在您的控制之下,那麼這是不可能的。如果您設計自己的系統,則在設計協議時必須小心,因爲您不希望在系統中意外打開安全漏洞。
這是不正確的 - 您不必讓PSExec在從機上「偵聽」以使用它。 – JBRWilkinson 2010-03-10 11:41:41
但肯定有東西要聽,如果不是PsExec,那麼別的東西。如果PsExec沒有自己監聽,那麼當請求到達時,其他的東西必須喚醒PsExec,這也是一樣的。發送到計算機的數據將被丟棄,除非計算機上的某些內容正在偵聽並執行響應數據的操作。 – Skizz 2010-03-10 11:54:55
您可以使用WMI ...(C#示例,所以你必須找到等價的C++)
ConnectionOptions connectOptions = new ConnectionOptions();
connectOptions.Username = "Administrator";
connectOptions.Password = "TopSecret";
ManagementScope scope = new ManagementScope(
@"\\" + machine + @"\root\cimv2",
connectOptions);
scope.Connect();
ManagementPath path = new ManagementPath(@"Win32_Process");
ManagementClass proc = new ManagementClass(scope, path, new ObjectGetOptions());
ManagementBaseObject args = proc.GetMethodParameters("Create");
args["CommandLine"] = "C:\\Windows\\notepad.exe";
proc.InvokeMethod("Create", args, null);
如果我正確認識,然後在Java中有可能,在遙控器上創建一個進程電腦要容易得多。這就是爲什麼我問,如果在C++中可能的話。順便說一下,目標機器是域名成員,我是管理員的所有電腦,或者如果我不是,我會指定一個用戶。 – kampi 2009-10-12 14:39:46
如果您是超級管理員,您可以使用以下技術: 1)使用MoveFileEx()API 將要運行的內容複製到\\ targetmachine \ C $ \ Someplace 2)使用OpenSCManager(「\\ targetmachine「,...)API連接到服務控制管理器 3)使用ServiceControl()API將EXE作爲服務」運行「。這不是一項服務,但是在SCM實現這一點之前,您的EXE將運行起來。 – JBRWilkinson 2009-10-13 13:26:24
你可能給我一個例子如何使用ServiceControl()?我找不到任何地方的例子,我可以使用:( – kampi 2009-10-13 18:59:55