从C#控制台程序运行以下代码时收到错误消息.
"该系统找不到指定的文件"
这是代码:
System.Diagnostics.Process.Start("C:\ Windows\System32\cmd.exe/c");
奇怪的是,当我省略/ c开关时,命令可以运行!?!
我有什么想法我做错了吗?
Dav*_*ton 11
Process.Start将文件名作为参数.将参数作为第二个参数传递:
System.Diagnostics.Process.Start(@"C:\Windows\System32\cmd.exe", "/c");
Run Code Online (Sandbox Code Playgroud)
好吧,首先,你是一个硬编码的路径,它已经注定要打破某人的系统(不是每个Windows安装都在C:\Windows).
但问题是这些反斜杠被用作转义字符.有两种方法可以像这样写一个路径字符串 - 要么转义反斜杠:
Process.Start("C:\\Windows\\System32\\cmd.exe", "/c");
Run Code Online (Sandbox Code Playgroud)
或者使用@禁用反斜杠转义:
Process.Start(@"C:\Windows\System32\cmd.exe", "/c");
Run Code Online (Sandbox Code Playgroud)
您还需要/c作为参数传递,而不是作为路径的一部分 - 使用Process.Start如上所示的第二个重载.