2011-10-17 28 views
2

我創建了一個與Process一起使用的批處理文件。我目前只是將應用程序指向本地機器上的一個目錄。是否可以在.exe中嵌入bat文件並將其與Process類一起使用?

我不想將這個批處理文件與我的exe文件捆綁在一起,我只想將它作爲一個資源進行嵌入,以便將它包含在exe文件中。這是可能的批處理文件?

ProcessStartInfo startInfo = new ProcessStartInfo() 

startInfo.FileName = "c:\test\batchFile.bat"; 

// set up and execute batch file with various arguments 

我已經添加了批處理文件,我的解決方案,並將其添加爲「資源」到我的項目文件。我不完全相信這是要走的路,或者如何在我的項目中訪問這個。

回答

2

至於嵌入批處理文件 - 你可以嵌入任何事情如果需要的話......答案這是的:-)

至於如何使用嵌入式批處理文件 - 最簡單的選擇是從資源中讀取它(見http://msdn.microsoft.com/en-us/library/system.resources.resourcemanager.aspxhttp://msdn.microsoft.com/en-us/library/system.reflection.assembly.getmanifestresourcestream.aspx),並將其保存爲一個真實的f ile - 然後使用它。

如果你想嵌入一個.NET EXE/DLL,你可以使用它,而不必將它保存爲一個真正的文件...與批處理文件我懷疑你需要將它保存爲一個真實的文件。

1

當然

你應該運行,但與以前command.com

System.Diagnostics.Process.Start("cmd", "/c c:\test\batchFile.bat"); 
1

如何對這種做法:

  • 儲存您的批處理文件在你的程序(如資源或字符串常量或......)
  • 內容保存到一個臨時文件
  • 運行這個臨時批文件
1

可能最符合防禦要求的方法是將.bat寫入臨時文件,然後運行該臨時文件。

根據我的經驗,cmd.exe相當持久,在不同的環境下可以表現出不同的方式。如果您希望它的行爲與您要從文件系統運行的.bat文件相同,那麼您應該從文件系統運行.bat文件。

你可以嘗試(但我不會推薦)將命令輸送到cmd.exe的一個實例,但正如我所說的,你可能會得到不同的行爲。

相關問題