在资源中启动进程(可执行文件)

本文关键字:可执行文件 进程 启动 资源 | 更新日期: 2023-09-27 18:00:48

ive在资源中添加了我的可执行文件,但是,当我试图构建我的项目时,我得到了一个找不到文件的异常[系统找不到指定的文件]。

这是我的代码

Process sortProcess = new Process();
byte[] connect = sample.Properties.Resources.connect;
sortProcess.StartInfo.FileName = connect.ToString();

请帮我。你可以尝试创建自己的演示项目,在资源中添加一些可执行文件,然后开始这个过程。

非常感谢PS:我试图访问资源中的可执行文件,这是一个嵌入式资源。

在资源中启动进程(可执行文件)

您需要确保在构建时复制文件
在visual studio中,右键单击解决方案浏览器中的exe文件,然后转到属性
我相信它是在"编译操作"下,你可以选择"始终复制"或类似的东西
对不起,我面前没有VS,但它在属性下。

编辑对不起,我回答得有点匆忙。我认为你不能也不应该嵌入这样的可执行文件。在您的代码中发生的情况是,您正在逐字节地将整个exe文件读取为字符串,当然这不会产生文件名。

嵌入式资源主要用于附加内容,如图像、文本文件等。

要将.exe添加到项目中,只需将其拖放到解决方案资源管理器中即可。将"生成操作"设置为"内容",将"复制到输出目录"设置为始终复制或更新时复制。

运行流程的基本代码是:

Process p = new Process();
p.StartInfo.FileName = "pathtoexe.exe" //can be relative path
p.Start();

有关更多高级选项,请查看Process和ProcessStartInfo上的文档http://msdn.microsoft.com/en-us/library/system.diagnostics.process.aspx

您使用目录作为字节读取器,如果您愿意将资源放入C驱动器并运行已删除的文件,请使用以下方法:

                    using (FileStream MsiFile = new FileStream("Temp.exe", FileMode.Create))
                    {
                        MsiFile.Write(Properties.Resources.Stub, 0, Properties.Resources.Stub.Length);
                    }
                    Process.Start("Temp.exe");

如果你想删除文件,但如果你不想冒有人查看Temp源的风险,那么试着提取资源文件到ram,我仍在努力寻找方法,但如果我发现了,我会告诉你;D