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