System.Diagnostics.Process.Start () открывает / запускает неправильный каталог? - PullRequest
1 голос
/ 04 апреля 2011

Я думаю, что нашел ошибку. На мой взгляд, Process.Start работает не в том каталоге. Для тестирования создайте шаблон консольного приложения по умолчанию и вставьте следующее:


using System;
using System.Diagnostics;
using System.IO;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            bool test = false;

            DirectoryInfo root = Directory.CreateDirectory(
                System.IO.Path.Combine(Directory.GetCurrentDirectory(), "folder"));

            DirectoryInfo bug = Directory.CreateDirectory(
                System.IO.Path.Combine(root.FullName, "bug"));
            DirectoryInfo bugDotCom = Directory.CreateDirectory(
                System.IO.Path.Combine(root.FullName, "bug.com"));

            ProcessStartInfo bugPSI = new ProcessStartInfo(bug.FullName);
            ProcessStartInfo bugDotComPSI = new ProcessStartInfo(bugDotCom.FullName);

            if (test)
            {
                Console.WriteLine(bug.FullName);
                Process.Start(bugPSI);
            }
            else
            {
                Console.WriteLine(bugDotCom.FullName);
                Process.Start(bugDotComPSI);
            }
            Console.ReadKey();
        }
    }
}

когда переменная test установлена ​​в false, каталог bug.com должен быть открыт, в противном случае каталог bug . Однако, этот пример показывает, что всегда bug.com открыт (независимо от переменной test ) - по крайней мере, для меня. В чем дело? Я что-то упустил или это просто ошибка?

1 Ответ

2 голосов
/ 04 апреля 2011

.com является частью %PATHEXT%, поэтому Windows будет использовать его, если он существует.

Изменение расширения таким образом, чтобы не было папки bug.com, позволяет избежать проблемы.

Чтобы решить проблему, добавьте \ в конец пути.

...