Process.Start( "notepad.exe", "\"C:\\Documents and Settings\\A\\My Documents\\a.txt\"" ); 试试看这个
不过你的代码在我的机器上是没有错误的,呵呵

解决方案 »

  1.   

    1、用API  ShellExecute来调用文件,see:[DllImport("shell32.dll", EntryPoint="ShellExecuteA")]
    private static extern int ShellExecute(int hwnd, string lpOperation, string lpFile, string lpParameters, string lpDirectory, int nShowCmd);bytton1_Click()
    {
    string s=@"C:\Documents and Settings\A\My Documents\a.txt";
    ShellExecute(0,null,s,null,null,5);
    }2、用API  GetShortPathName得到短文件名,然后再调用这个短文件名,see:button1_Click()
    {
    string s=@"C:\Documents and Settings\A\My Documents\a.txt";
    string sShort=ToShortPathName(s);
             Console.WriteLine(sShort);
             Process.Start("notepad.exe", sShort); 
    }
    [DllImport("kernel32.dll", EntryPoint="GetShortPathNameA")]
    private static extern int GetShortPathName(string lpszLongPath, StringBuilder lpszShortPath, int cchBuffer);
    /// <summary>
    /// The ToLongPathNameToShortPathName function retrieves the short path form of a specified long input path
    /// </summary>
    /// <param name="longName">The long name path</param>
    /// <returns>A short name path string</returns>
    public string ToShortPathName(string longName)
    {
    StringBuilder shortNameBuffer = new StringBuilder();
    int size = GetShortPathName(longName, shortNameBuffer, shortNameBuffer.Capacity);
    if(size >= shortNameBuffer.Capacity)
    {
    shortNameBuffer.Capacity = size + 1;
    GetShortPathName(longName, shortNameBuffer, shortNameBuffer.Capacity);
    } return shortNameBuffer.ToString();
    }