如何在进程中使用msinfo32.exe命令行

本文关键字:msinfo32 exe 命令行 进程 | 更新日期: 2023-09-27 18:25:10

我有一个简单的代码:

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''bout_000''AppData''Local''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",则文件TEST.nfo将在C:''TEST 中创建

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

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

C: ''Users''bout_000''AppData''Local''Diagnostic_Tool_Blue_Screen从内容返回两个目录目录

诊断文件是24mb,它是可以的,但这不是我想要创建的文件名,也不在这个位置。

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

但什么都没用。

我还能做什么?

如何在进程中使用msinfo32.exe命令行

的字符串

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" + "'"";

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

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

但是,通常情况下,任何类型的路径在放入空格分隔的字符串中时都应该被引用,因为它们是单个项。因此:

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

您根本不需要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