在Resources中启动一个Process(可执行文件)

香港专业教育学院在资源中添加了我的可执行文件,然而,当我尝试构建我的项目时,我找到了一个未找到文件的exception[系统找不到指定的文件]。

这是我的代码

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