2014-12-25 2 views
0

Я хочу открыть блокнот с CMD, используя C#, но путь имеет пробел в нем. Я знаю, что есть много вопросов, подобных этому, но я не мог получить ни одно из этих решений для работы с моим примером. Я не знаю почему. Если кто-то хочет помочь, он будет очень признателен.Как открыть блокнот с помощью cmd?

System.Diagnostics.Process process = new System.Diagnostics.Process(); 
    System.Diagnostics.ProcessStartInfo startInfo = new System.Diagnostics.ProcessStartInfo(); 
    startInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden; 
    startInfo.FileName = "cmd.exe"; 
    startInfo.Arguments = @"/C START ""C:\Users\Dale\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Accessories\notepad.exe"""; 
    process.StartInfo = startInfo; 
    process.Start(); 

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

startInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden; 
+0

возможно дубликат [Использовать Process.Start с параметрами и пробелов в пути] (http://stackoverflow.com/questions/17321289/use-process -start-with-parameters-and-spaces-in-path) – nquocnghia

ответ

5

Вы, конечно, не имеют приложения блокнота в стартовое меню, есть только ярлык там. Обычно блокнота находится здесь:

C: \ Windows \ System32 \ notepad.exe

Что может ввести в заблуждение, является то, что нажав кнопку «Открыть расположение файла» на значок блокнота в меню Пуск принимает вас на место, где находится ярлык. Однако вы можете заметить, что это только ярлык из-за маленькой стрелки в углу. Затем вы можете щелкнуть правой кнопкой мыши и снова выбрать «Открыть местоположение файла» - на этот раз он укажет вам нужное место.

+0

спасибо! Я приму этот ответ, как только смогу. – user2059810

-1

C#, вероятно, игнорирует двойные двойные кавычки, т. Е. «».

Попробуйте избежать кавычки с обратной косой черты, то есть:

startInfo.Arguments = @ "/ C START "\" C: \ Users \ Dale \ AppData \ Roaming \ Microsoft \ Windows \ Start Menu \ Programs \ Accessories \ notepad.exe \ "" ";

+1

Нет проблем с кавычками. – Onots

-1

Я предполагаю путь и все, что правильно.

В C#, добавив @, перед тем как строка позаботится о специальных символах, которым в противном случае понадобится символ выхода перед ним (\).

@"/C START ""C:\Users\Dale\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Accessories\notepad.exe"""

Это должно расширяться /C START ""C:\Users\Dale\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Accessories\notepad.exe"". Я думаю, у него есть некоторые проблемы с поиском этого пути. Возможно, сокращение двойных кавычек по одному с каждой стороны поможет.

+1

Он расширяется до/C START «C: \ Users \ Dale \ AppData \ Roaming \ Microsoft \ Windows \ Start Menu \ Programs \ Accessories \ notepad.exe". Пользователь2059810 получил правильные цитаты. – Onots

+0

О, спасибо, был уверен. На этот раз выучил уроки. –

0

Безопасный и лучший подход, чтобы пойти с

string notepad_path = System.Environment.SystemDirectory + "\notepad.exe"; 
Смежные вопросы