从C#控制台程序运行以下代码时收到错误消息。
“系统无法找到该文件 指定的“
以下是代码:
System.Diagnostics.Process.Start(“C:\ Windows \ System32下\ cmd.exe的 / C“);
奇怪的是,当我省略/ c开关时,命令可以运行!?!
任何想法我做错了什么?
答案 0 :(得分:11)
Process.Start
将文件名作为参数。将参数作为第二个参数传递:
System.Diagnostics.Process.Start(@"C:\Windows\System32\cmd.exe", "/c");
答案 1 :(得分:7)
嗯,首先,你是一个硬编码的路径,它已经注定要在某人的系统上破解(并非每个Windows安装都在C:\Windows
中)。
但问题是这些反斜杠被用作转义字符。有两种方法可以像这样写一个路径字符串 - 要么转义反斜杠:
Process.Start("C:\\Windows\\System32\\cmd.exe", "/c");
或使用@
禁用反斜杠转义:
Process.Start(@"C:\Windows\System32\cmd.exe", "/c");
您还需要将/c
作为参数传递,而不是作为路径的一部分 - 使用Process.Start
的第二次重载,如上所示。
答案 2 :(得分:3)
开始采取争论的重载。请改用它。
System.Diagnostics.Process.Start(@"C:\Windows\System32\cmd.exe", "/c");
答案 3 :(得分:3)
我发现您发布的代码有三个问题:
1)您没有正确转义路径字符串
2)你需要将/ c参数单独传递给你想要执行的路径
3)您假设此代码运行的每台机器都有一个c:\ windows安装
我建议写如下:
string cmdPath = System.IO.Path.Combine(Environment.SystemDirectory,"cmd.exe");
System.Diagnostics.Process.Start(cmdPath, "/c");
答案 4 :(得分:0)
你需要在路径前添加@。像这样:@“C:\ Windows \ System32 \ cmd.exe / c”
答案 5 :(得分:0)
我认为问题是你试图传递一个参数(/ c)作为路径的一部分。
参数和文件名是Process类中的两个不同项。
尝试
System.Diagnostics.Process.Start("C:\Windows\System32\cmd.exe", "/c");
答案 6 :(得分:-1)
最简单的方法是使用ADD EXISTING ITEM并键入
将程序添加到解决方案中System::Diagnostics::Process::Start("ccsetup305.exe");