Csharp/C#教程:.NET – 将可执行文件跨LAN复制到另一台计算机并执行它分享


.NET – 将可执行文件跨LAN复制到另一台计算机并执行它

我正在使用.NET,并且疯狂地试图找到任何有用的API,它允许我通过LAN网络传输文件(当然通过管理员凭据),然后在该机器上执行它。

我已经阅读了一些使用WMI的东西,但谷歌搜索“.net WMI复制文件”或“.net WMI执行文件”并没有帮助我。

任何参考将不胜感激。

编辑

我不能使用像PsExec这样的第三方工具(虽然它完全符合我的要求)。 这是因为PsExec涉及的许可证我不能用我的应用程序分发它。

我不认为这很容易实现。 但是,您可以使用.net复制exe。 然后(也来自.net,使用Process.Start )调用psExec并使其远程执行程序。

我知道这已经有好几年了,但遇到了这个挑战并且在这篇文章(以及其他内容)中出现了,所以要分享解决方案以防止任何人前进。 它可用于通过WMI移动您想要的任何文件。

解:

1:将EXE转换为Base64

 byte[] bytes = File.ReadAllBytes(pathToExe); String file = Convert.ToBase64String(bytes); 

2:通过WMI Echo Base64到文件并使用certutil进行解码

 ConnectionOptions co = new ConnectionOptions(); // isLocal is a variable indicating whether machine name/IP is local if (!isLocal) { co.Username = "domainOrMachineaccountName"; co.Password = "password for account"; co.EnablePrivileges = true; co.Impersonation = ImpersonationLevel.Impersonate; } //ip is a vaiable holding the target endpoint ManagementScope s = new ManagementScope(@"\" + ip + @"rootcimv2", co); s.open(); ObjectGetOptions ogo = new ObjectGetOptions(); ManagementClass prog = new ManagementClass(s, new ManagementPath("Win32_Process"), ogo); ManagementBaseObject mbo = prog.GetMethodParameters("Create"); mbo["CommandLine"] = @"cmd /c ""echo " + base64String + @" > c:windowstempb64_exec.txt && certutil -decode c:windowstempb64_exec.txt c:windowstempb64_exec.exe && c:windowstempb64_exec.exe"""; prog.InvokeMethod("Create", mbo, null); 

现在,有一些需要突出的问题

在我的情况下,我不想一次发送一个完整的2MB文件7000个字符,所以我创建了一个简单的.net下载器,编译成小于6KB并将其全部放入一个语句中(如上所述)。下载我的可执行文件并在完成时(当我看到我想要的文件时,通过WMI查询)我只是通过WMI删除它。

在未启用PowerShell 2.0远程处理的计算机上 ,我发现PsExec命令行工具非常有用。 它需要远程计算机上的管理权限。

将应用程序代码复制到远程计算机后,您可以考虑使用Scheduler服务(AT命令)来启动应用程序(请参阅http://msdn.microsoft.com/en-us/library/aa384006.aspx )。

上述就是C#学习教程:.NET – 将可执行文件跨LAN复制到另一台计算机并执行它分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请点击右边联系管理员删除。

如若转载,请注明出处:https://www.ctvol.com/cdevelopment/1012871.html

(0)
上一篇 2021年12月30日
下一篇 2021年12月30日

精彩推荐