如何用cmd打开记事本?

时间:2014-12-25 00:57:47

标签: c# path cmd

我想用CMD打开记事本,使用C#,但路径中有一个空格。我知道有很多类似的问题,但是我无法使用这些解决方案来处理我的示例。我不知道为什么。如果有人想要帮助,我们将不胜感激。

  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;

4 个答案:

答案 0 :(得分:5)

您的“开始”菜单中肯定没有记事本应用程序,那里只有一个快捷方式。通常记事本位于:

  

C:\ Windows \ System32下\ Notepad.exe的

可能会产生误导的是,点击"打开文件位置"在“开始”菜单中的记事本图标上,您将转到放置快捷方式的位置。但是,您可能会注意到它只是一个快捷方式,因为角落里的小箭头图标。然后,您可以右键单击并选择"打开文件位置"再次 - 这次会指出你到了正确的地方。

答案 1 :(得分:0)

安全且更好的方法是使用

string notepad_path = System.Environment.SystemDirectory + "\notepad.exe";

答案 2 :(得分:-1)

C#可能忽略了双引号,即""。

尝试使用反斜杠转义引号,即:

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

答案 3 :(得分:-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""。我想这个路径有一些问题。也许将双引号减少到每一方都会有所帮助。