【问题标题】:rebuild wmi classes with c#用 c# 重建 wmi 类
【发布时间】:2013-04-04 10:53:08
【问题描述】:

我正在编写 C# 代码来重建 wmi 类。我发现可以在here 讨论的这些命令的帮助下完成:

Regsvr32 %SystemRoot%\System32\wbem\wmidcprv.dll
cd /d %windir%\system32\wbem
for %i in (*.dll) do RegSvr32 -s %i
for %i in (*.exe) do %i /RegServer

我尝试在 cmd 中传递这些命令并将输出读取为:

Process objProcess = new Process();
objProcess.StartInfo.UseShellExecute = false;
objProcess.StartInfo.RedirectStandardOutput = true;
//objProcess.StartInfo.CreateNoWindow = true;
//objProcess.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
string cmd1=@"Regsvr32 %SystemRoot%\System32\wbem\wmidcprv.dll";
string cmd2=@"cd /d %windir%\system32\wbem";
string cmd3=@"for %i in (*.dll) do RegSvr32 -s %i";
string cmd4 = @"for %i in (*.exe) do %i /RegServer";
string strFinal = cmd1 + "\n" + cmd2 + "\n" + cmd3 + "\n" + cmd4;
//string cmd1=@"Regsvr32 %SystemRoot%\System32\wbem\wmidcprv.dll cd /d %windir%\system32\wbem for %i in (*.dll) do RegSvr32 -s %i for %i in (*.exe) do %i /RegServer";
objProcess.StartInfo.FileName = string.Format("cmd.exe");
objProcess.StartInfo.Arguments = string.Format(strFinal);
try
{
objProcess.Start();
}
catch
{
throw new Exception("Error");
}
StreamReader strmReader = objProcess.StandardOutput;
string strTempRow = string.Empty;
while ((strTempRow = strmReader.ReadLine()) != null)
{
    Console.WriteLine(strTempRow);
}
if (!objProcess.HasExited)
{
objProcess.Kill();
}

可以分享一下如何通过代码而不是手动实现这一点。

【问题讨论】:

    标签: c# .net wmi wmi-query wmi-service


    【解决方案1】:

    我假设您在执行 ms-dos 命令时遇到问题,而不是读取输出。

    您是否尝试过使用这些命令创建批处理文件并使用系统进程类执行它?

    首先,使用这些命令创建批处理文件并手动执行它。如果它工作正常,那么只需像以前一样执行它。

    System.Diagnostics.Process.Start("wmiBuilder.bat");

    【讨论】:

    • 感谢您的努力,但我不想使用批处理文件。 B想通过直接C#不管是cmd还是wmi命令来做
    • 一个一个地执行命令或者看看这个答案stackoverflow.com/a/8860385/2244573
    • 只需创建一个临时批处理文件,然后使用 CMD.EXE 运行它。这就是 MSBuild 的 <Exec> 任务所做的。
    • 如何在运行时创建临时批处理文件?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多