首先,这是我的第一个程序,我对HTML和一些JS之外的整体编程非常陌生。话虽这么说,我正在构建一个收集和收集系统文件的应用程序,用于故障排除。我对我到目前为止所做的工作有一个基本的了解,我只是遇到了dxdiag参数的问题:
var process = new Process();
var startInfo = new ProcessStartInfo();
// startInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
startInfo.FileName = "cmd.exe";
startInfo.Arguments = @"/c dxdiag /whql:on /t %UserProfile%\Desktop\My System Files\dxdiag.txt";
process.StartInfo = startInfo;
process.Start();
process.WaitForExit();
*为了澄清,我注释掉了隐藏的行,以便在构建应用程序时可以看到CMD窗口正在做什么。
现在我已经查了一下,发现了多个与类似代码的使用有关的其他线程,但无法弄清楚为什么我的变体不能使用我所包含的参数。这是我提出CMD并执行dxdiag命令的块。我已经多次在CMD中测试了命令本身,以确保它可以正常工作。我的问题是,上面的参数不会在启动的CMD提示中执行。我将包含下面的完整代码块以提供更多上下文,因为我将使用msinfo32导出。它也没有执行命令(这里没有预料到不同的结果)。
using System;
using System.IO;
using System.Diagnostics;
namespace System_File_Collection_App
{
class Program
{
public static void Main(string[] args)
{
// DXDIAG Output
var process = new Process();
var startInfo = new ProcessStartInfo();
//startInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
startInfo.FileName = "cmd.exe";
startInfo.Arguments = @"/c dxdiag /whql:on /t %UserProfile%\Desktop\My System Files\dxdiag.txt";
process.StartInfo = startInfo;
process.Start();
process.WaitForExit();
// MSINFO32 Output
var process = new Process();
var startInfo = new ProcessStartInfo();
//startInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
startInfo.FileName = "cmd.exe";
startInfo.Arguments = @"/c msinfo32 /nfo %UserProfile%\Desktop\My System Files\";
process.StartInfo = startInfo;
process.Start();
process.WaitForExit();
}
}
}
当我复制它时,缩进部分搞砸了但是一切都结束了,我能够运行程序。
编辑:删除dxdiag参数并在代码中使用dxdiag完全正常。我用它作为测试点来确保命令实际启动。我只是不太明白为什么不使用辅助参数。
不起作用:
startInfo.Arguments = @"/c dxdiag" + "/whql:on" + "/t \"%UserProfile%\\Desktop\\dxdiag.txt\"";
使用:
startInfo.Arguments = @"/c dxdiag";
答案 0 :(得分:0)
你可能忘记了参数之间的空格,因为这个工作正常:
startInfo.Arguments = @"/c dxdiag /whql:on /t %userprofile%\Desktop\Examples\New folder\myinfo.txt"
请注意,文件夹的路径必须存在,否则无法正常工作。