[英]start a Process (executable) in Resources
我在资源中添加了我的可执行文件,但是,当我尝试构建我的项目时,我得到了一个找不到文件的异常[系统找不到指定的文件]。
这是我的代码
Process sortProcess = new Process();
byte[] connect = sample.Properties.Resources.connect;
sortProcess.StartInfo.FileName = connect.ToString();
请帮助我。 您可以尝试创建自己的演示项目,在资源中添加一些可执行文件,然后启动该过程。
非常感谢 PS:我试图访问资源中的可执行文件,这是一个嵌入式资源。
您使用目录作为字节阅读器,如果您愿意将资源拖放到 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
您需要确保在构建时复制文件。
在 Visual Studio 中,右键单击解决方案浏览器中的 exe 文件和 go 到属性。
我相信它在“编译操作”下,您可以在其中 select“始终复制”或类似的东西。
抱歉,我面前没有 VS,但它在属性下。
编辑对不起,我很匆忙地回答了这个问题。 我认为您不能也不应该嵌入这样的可执行文件。 您的代码中发生的事情是您正在逐字节读取整个 exe 文件到字符串,这当然不会产生文件名。
嵌入式资源主要用于附加内容,如图像、文本文件等。
要将.exe 添加到您的项目中,您只需将其拖放到解决方案资源管理器中即可。 将“构建操作”设置为“内容”,将“复制到 output 目录”设置为“始终复制”或“如果更新则复制”。
运行进程的基本代码是:
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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.