2011-07-01 122 views
0

ive在資源中添加了我的可執行文件,但是當我試圖構建我的項目時,我找到了一個未找到文件的異常[系統找不到指定的文件]。在資源中啓動一個進程(可執行文件)

這裏是我的代碼

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

請幫助我。您可以嘗試創建自己的演示項目,在資源中添加一些可執行文件,然後啓動該過程。

非常感謝你 PS:即時通訊試圖訪問資源中的可執行文件,這是一個嵌入式資源。

回答

0

您需要確保文件在構建時被複制。
在visual studio中,右鍵單擊解決方案瀏覽器中的exe文件並轉到屬性。
我相信它是在「編譯行動」下,你可以選擇「總是複製」或類似的東西。
對不起,我沒有在我面前的VS,但它是在屬性下。

編輯對不起,我很快就回答了這個問題。我不認爲你可以或者應該嵌入像這樣的可執行文件。你的代碼中發生的事情是,你正在讀取整個exe文件,逐字節地讀取字符串,哪個課程不會產生文件名。

嵌入式資源主要用於其他內容,如圖像,文本文件等。

要將.exe添加到您的項目中,只需將其拖放到解決方案資源管理器中即可。 將'build action'設置爲'content'和'Copy to output directory'爲'always copy'或'copy if newer'。

運行過程基本代碼將是:

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

檢查過程和的ProcessStartInfo的文檔,更高級的選項 http://msdn.microsoft.com/en-us/library/system.diagnostics.process.aspx

+0

是的,它的設置在編譯時拷貝。 – Lufthansa

+0

它已經設置爲embeeded資源 – Lufthansa

+0

編輯我的答案,第一次沒有完全讀你的問題,sry :) –

0

你使用目錄作爲一個字節的讀者,如果您願意把資源放到你的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

相關問題