我有一个C#GUI,允许用户选择一个文件,然后针对objdump运行它,将内容输出到GUI。
但是,当用户选择路径包含空格的文件时,我遇到问题,导致命令行执行中断。
我浏览了Stackoverflow,似乎有所有这些用于Windows脚本的黑客攻击,因为带空格的路径不容易解决。但是,当我以编程方式传递文件名时,我不能这样做/有更简单的方法吗?
这是我的代码:
private void button1_Click(object sender, EventArgs e)
{
DialogResult result = openFileDialog1.ShowDialog();
if (result == DialogResult.OK){
dataGridView1.Rows.Clear();
dataGridView1.Refresh();
string filename = openFileDialog1.FileName; //May contain spaces
try
{
var proc = new Process
{
StartInfo = new ProcessStartInfo
{
FileName = "dumpbin.exe",
Arguments = "/DISASM " + filename, // Causing this to fail
UseShellExecute = false,
RedirectStandardOutput = true,
CreateNoWindow = true
}
};
proc.Start();
答案 0 :(得分:2)
您需要使用双引号包装文件名,就像通常从命令行一样。
试试这个:
Arguments = "/DISASM \"" + filename + "\"",
答案 1 :(得分:0)
尝试在路径周围加上引号
pSInfo.Argument = @"""c:\test cases\testfile.csv""";
或者如果您愿意
pSInfo.Argument = "\"c:\\test cases\\testfile.csv\"";
答案 2 :(得分:0)
在filename
附近使用引号:
Arguments = $"/DISASM \"{filename}\"",