2

我有这个简单的代码:

private void MsInfo()
        {
            Process proc = new Process();
            proc.EnableRaisingEvents = true;
            proc.StartInfo.UseShellExecute = false;
            proc.StartInfo.FileName = "msinfo32.exe";
            proc.StartInfo.CreateNoWindow = true;
            proc.StartInfo.Arguments = "/nfo " + contentDirectory + "\\msinfo.nfo";
            proc.StartInfo.WorkingDirectory = contentDirectory;
            proc.Start();
            proc.WaitForExit();
            proc.Close();
        }

我想在目录 contentDirectory 中创建 msinfo.nfo。contentDirectory 现在是:

C:\Users\bout0_000\AppData\Local\Diagnostic_Tool_Blue_Screen\Diagnostic Tool Blue Screen\SF_28-07-13

我想在参数中使用变量 contentDirectory 的原因是目录 SF_28-07-13 每天都在变化。明天是 SF_29-07-13

如果我会在论点中这样做:

proc.StartInfo.Arguments = "/nfo C:\TEST\TEST.NFO" 然后将在 C:\TEST 中创建文件 TEST.NFO

但是由于某种原因,当我使用 contentDirectory 变量时,我无法在任何地方看到文件 msinfo.nfo。

相反,我在以下位置看到一个名为 Diagnostic 的奇怪文件名:

C:\Users\bout0_000\AppData\Local\Diagnostic_Tool_Blue_Screen 从 contentDirectory 返回两个目录

诊断文件是 24mb 并且没问题,但这不是我想要创建的文件名,而不是在这个位置。

我在参数中尝试了很多方法,还删除/删除了该行:proc.StartInfo.WorkingDirectory = contentDirectory;

但没有任何效果。

我还可以做些什么 ?

4

3 回答 3

2

的字符串

C:\Users\bout0_000\AppData\Local\Diagnostic_Tool_Blue_Screen\Diagnostic Tool Blue Screen\SF_28-07-13\msinfo.nfo

应该用双引号:

"C:\Users\bout0_000\AppData\Local\Diagnostic_Tool_Blue_Screen\Diagnostic Tool Blue Screen\SF_28-07-13\msinfo.nfo"

和:

proc.StartInfo.Arguments = "/nfo " + "\"" + contentDirectory + "\\msinfo.nfo" + "\"";
于 2013-07-28T16:55:30.390 回答
0

您根本不需要 Arguments 属性的完整路径。
您已经将 WorkingDirectory 设置为contentDirectory因此,文件 nfo 将在那里自动创建。

 proc.StartInfo.Arguments = "/nfo msinfo.nfo";
 proc.StartInfo.WorkingDirectory = contentDirectory;

就像您在命令提示符下键入

C:>\ CD "\Users\bout0_000\AppData\Local\Diagnostic_Tool_Blue_Screen\Diagnostic Tool Blue Screen\SF_28-07-13"
C:\Users\bout0_000\AppData\Local\Diagnostic_Tool_Blue_Screen\Diagnostic Tool Blue Screen\SF_28-07-13> msinfo32.exe /nfo msinfo.nfo
于 2013-07-28T16:57:21.237 回答
0

由于您正在设置工作目录,因此您可以省略输出文件的路径,并且应该相对于工作目录创建文件:

proc.StartInfo.Arguments = "/nfo msinfo.nfo";
proc.StartInfo.WorkingDirectory = contentDirectory;

但是,一般来说,任何类型的路径在放入以空格分隔的字符串时都应该被引用,因为它们是单个项目。所以:

proc.StartInfo.Arguments = "/nfo \"msinfo.nfo\"";
proc.StartInfo.WorkingDirectory = contentDirectory;
于 2013-07-28T17:00:25.963 回答