系统无法在Process Start中找到指定Exception的文件

时间:2011-02-06 14:19:23

标签: c# .net exception process

我从C#开始一个进程有一些例外 以下是代码

Process myProcess = new Process();  
try  
{  
    myProcess.StartInfo.UseShellExecute = true;  
    myProcess.StartInfo.FileName = "c:\\windows\\system32\\notepad.exe C:\\Users\\Karthick\\AppData\\Local\\Temp\\5aau1orm.txt";  
    myProcess.StartInfo.CreateNoWindow = false;  
    myProcess.Start();  
}  
catch (Exception e)  
{  
    Console.WriteLine(e.Message);  
}

如果useShellExecute设置为false,有时会出现“文件名,目录名称或卷标语法不正确”的异常

关于为什么没有正确出现的任何想法

4 个答案:

答案 0 :(得分:3)

您不能将整个命令行放在FileName属性中。

相反,你应该Start txt文件,它将在用户的默认编辑器中打开:

Process.Start(@"C:\Users\Karthick\AppData\Local\Temp\5aau1orm.txt");

答案 1 :(得分:1)

您正在尝试执行c:\\windows\\system32\\notepad.exe C:\\Users\\Karthick\\AppData\\Local\\Temp\\5aau1orm.txt。如果你没有使用shell,它将按字面解释。如果使用shell,shell将负责解析参数。

使用ProcessStartInfo.Arguements属性来提供参数。

答案 2 :(得分:1)

如@SLaks所述,这是合适的方法 让默认应用程序(在您的情况下映射到.txt扩展名)打开文件

Process.Start("test.txt");

但是,如果您更喜欢仅在记事本中打开文本文件而不在其他默认文本编辑器

中打开文本文件
ProcessStartInfo processStartInfo = new ProcessStartInfo(@"c:\Windows\System32\notepad.exe", "text.txt");
Process.Start(processStartInfo);

答案 3 :(得分:0)

FileName属性不采用命令行类型语法。您指定的是命令行。

由于只有 .txt 文件,您可以使用Process.Start()方法和完整文件路径。它会自动搜索相应的默认程序以打开文件。