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

2023-11-27

我正在使用 .NET,并疯狂地尝试找到任何有用的 API,让我可以通过 LAN 网络传输文件(当然是通过管理员凭据),然后在该计算机上执行它。

我读过一些使用 WMI 的内容,但谷歌搜索“.net WMI 复制文件”或“.net WMI 执行文件”对我根本没有帮助。

任何参考将不胜感激。

EDIT

我无法使用 PsExec 等第三方工具(尽管它完全满足我的需要)。这是因为 PsExec 涉及许可证,我无法将其与我的应用程序一起分发。


我知道已经过去很多年了,但遇到了这个挑战并看到了这篇文章(以及其他文章),因此我将分享解决方案,以防它可以帮助任何人前进。它可用于通过 WMI 移动任何您想要的文件。

解决方案:

1:将EXE转换为Base64

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

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

ConnectionOptions co = new ConnectionOptions();

// isLocal is a variable indicating whether machine name/IP is local    
if (!isLocal) {  
    co.Username = "domainOrMachine\accountName";
    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 + @"\root\cimv2", 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:\windows\temp\b64_exec.txt && certutil -decode c:\windows\temp\b64_exec.txt c:\windows\temp\b64_exec.exe && c:\windows\temp\b64_exec.exe""";

prog.InvokeMethod("Create", mbo, null);

现在,有一些问题需要强调

  • 传递的整个命令的长度不能超过 8191 个字符,这是命令的最大长度
  • 您可以分解 base64 文件并将其分成多个块发送 - 只需记住 > 管道到新文件或覆盖现有文件并 >> 附加或添加到现有文件。
  • 您还需要发出 del 命令来清理 base64 文件 - 根据可用空间,您可能需要进行第二次 WMI 调用来调用它。

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

.NET - 通过 LAN 将可执行文件复制到另一台计算机并执行它 的相关文章

  • 查询 LDAP 以查找过去 24 小时内创建的所有计算机对象

    我正在尝试使用 LDAP 查询返回过去 24 小时内创建的所有计算机对象 我的代码目前如下所示 Declare new DirectoryEntry and DirectorySearcher DirectoryEntry domainRo
  • 查找表到底是如何工作的以及如何实现它们? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我最近编写了一个程序 该程序处理大量 if else 语句以返回特定值 有人建议改用查找表 我的问题是 它们是如何工作的以及您如何实施
  • 如何在C#中隐藏文件?

    我想在c 中隐藏一个文件 我知道文件路径并且可以创建 FileInfo 对象 我怎样才能隐藏它 之前接受的答案 File SetAttributes path FileAttributes Hidden 将导致它可能丢失某些其他属性 因此您
  • 如何使用 MVVM light 处理 WP 8.1 上的后退按钮?

    我正在寻找适当的方法来处理 Windows Phone 8 1 WinRT 上的后退按钮按下事件NavigationService在 MVVM light 5 上可用 到目前为止 我认为最好的地方是在ViewModelLocator通过注册
  • 嵌入式Python,导入数学错误

    首先我使用的是 Mac OSX 10 12 6 我想在我的 C 应用程序中嵌入 python 环境 我把 github python 项目放在https github com python cpython https github com
  • 如何检测动态绘制图形的点击?

    我正在面板上绘制文件和文件夹名称列表 并试图集体讨论检测用户是否单击文件 文件夹名称以及何时单击文件 文件夹名称以及他们实际单击的文件或文件夹名称的最佳方法 以下是我迄今为止编写的方法 我的第一个想法是用透明控件搭载每段文本 并以这种方式动
  • Google 的“编码折线算法”的 C# 实现

    有谁有 Google 的简洁而强大的实现吗 编码折线算法 http code google com apis maps documentation utilities polylinealgorithm html in C 我本质上想要实现
  • 当我将鼠标悬停在组合框项目上时引发事件

    当我将鼠标悬停在组合框项目上时 我无法找到要触发的事件 我正在使用 Windows 窗体来构建应用程序 我发现WPF有类似的东西 当我将鼠标悬停在组合框项目上时如何更改标签文本 https stackoverflow com questio
  • .NET 4 代码契约:“需要未经验证:源!= null”

    我刚刚开始在我的项目中使用代码契约 但是 我的存储库实现存在问题 它使用实体框架查询数据库 我有以下方法 public IEnumerable
  • 与对象的互斥体

    我试图了解如何在 C 中将互斥体与对象一起使用 我有以下 简单的 多线程代码用作速度测试 struct Rope int n steps offset std mutex mut Rope Rope int n int steps int
  • 使用c#在ms access中更新

    有人可以帮助我的代码有什么问题吗 它是一个更新函数 在我的调试过程中它可以正确执行 但它不会更新我的数据库 我已经在寻找这个问题的答案 但仍然没有成功 我还尝试创建一个新的数据库 希望它有问题 但仍然没有效果 private void up
  • 基本镜面着色

    我正在使用一个生成阴影球体的简单代码 我还没有完全理解数学 但我在玩代码时正在弄清楚它 我想知道如何根据这段代码实现镜面反射着色 有什么建议么 for y 0 y
  • pthread 线程状态

    是否有一种机制可以用来判断 pthread 线程当前是否正在运行或已退出 如果线程尚未退出 pthread join 是否有一种方法能够在特定时间段后超时 如果您仅针对 Linux 请使用http www kernel org doc ma
  • 在 C# 中捕获异常

    我有一个简单的添加按钮 ADD Click 代码是 protected void Add Click object sender EventArgs e string strConnectionString ConfigurationMan
  • 通过“this->member”访问c++成员类比隐式调用“member”更快/更慢

    经过我们的朋友谷歌搜索后 我无法得到以下观点的明确看法 我习惯这样称呼班级成员this gt 即使不需要 我发现它更明确 因为它在维护一些带有大量变量的繁重算法时很有帮助 当我正在研究一种应该优化的算法时 我想知道是否使用this gt 是
  • 如何解决有关 TcpListener: 请使用 TcpListener(IPAddress localaddr, int port) 的警告?

    我创建了一个新表单 在顶部我做了 using System using System Collections Generic using System ComponentModel using System Data using Syste
  • 如何通过参数包传递引用?

    我有以下代码 include
  • 我是否需要显式关闭并处置 SQLConnection?

    SqlDataReader rdr null con new SqlConnection objUtilityDAL ConnectionString using SqlCommand cmd con CreateCommand try i
  • GO 语句破坏了 .NET 中的 SQL 执行

    我有一个非常简单的 C 命令 shell 应用程序 它执行 SQL Server 生成的 SQL 脚本来编写模式和数据脚本 它在 GO 声明中爆炸了 错误信息 GO 附近的语法不正确 这是完整的 sql 脚本 Object Table gy
  • 获取非通用任务的结果

    有没有办法得到结果Task

随机推荐