我想在命令提示符上以编程方式运行以下命令,读取其输出然后只是终止命令窗口。

sc查询事件日志

当我手动运行此命令时,下面是我得到的。

在此输入图像描述

这是我拥有的代码。

class Program
    {
        static string output;
        static void Main(string[] args)
        {
            Process p = new Process();
            p.StartInfo.UseShellExecute = false;
            p.StartInfo.RedirectStandardOutput = true;
            p.StartInfo.FileName = "cmd.exe";
            p.StartInfo.Arguments = "sc query eventlog";
            p.OutputDataReceived += p_OutputDataReceived;
            p.Start();


            p.BeginOutputReadLine();

            p.WaitForExit();
            p.Kill();
        }

        static void p_OutputDataReceived(object sender, DataReceivedEventArgs e)
        {
            output += e.Data + Environment.NewLine;
        }

但是在我的情况下,它只是等待WaitForExit的调用。 为此,我可能不得不杀死这个过程。 但我看到在输出变量中跟随。

Microsoft Windows [版本6.3.9600](c)2013 Microsoft Corporation。 版权所有。

我在这做错了什么?

#1楼 票数:4 已采纳

您需要调用sc.exe而不是cmd.exe:

p.StartInfo.FileName = "sc.exe";
p.StartInfo.Arguments = "query eventlog";

  ask by paul deter translate from so

未解决问题?本站智能推荐:

2回复

如何检查您是否具有运行exe文件的权限

C#.net Framework 4.0是否有简单的方法来检查您是否有权运行文件? 在我这样做之前: 我想检查用户是否有权运行该文件? 当我使函数调用Process.Start时,Windows弹出一个消息框,并说我无权运行此应用程序,并且此应用程序是“ D:\\ something
8回复

WPFDotNET应用程序将以调试模式运行,但.EXE将无法运行

我使用VS 2010在C#中编写了一个WPF应用程序。应用程序将在使用Visual Studio的调试模式下正常运行,但是当我从bin \\ release文件夹运行.EXE时,没有任何反应。 我没有收到来自Windows的任何错误消息,并且VS中没有错误或警告。 我试图建立,重建和清理解决
2回复

使exe在较低版本的框架上运行

我正在从C#应用程序创建一个exe,并添加了一些dlls例如 问题是我使用的是.NET Framework 4.0,而当我在.NET 2.0上运行提取程序时,它崩溃了。 有人可以告诉我如何使exe在从.NET 4应用程序创建的.NET 2.0上运行吗? 我正在引用的示例
1回复

如何在DLL而不是exe上使用app.config

这是一个姐妹问题,也是我的第一个问题, 允许使用.NET 2.0构建的C#应用​​程序在.NET 4.0 / 4.5上运行 。 我在那里简化了我的处境,以便理解。 实际上,我们的情况有点特殊。 基本上,我们为MSI安装程序编写了一个C#DLL(我们称为E.dll )。 由于我们的MSI
2回复

读取系统音频输出流

我目前正在为XNA制作示波器组件,需要一些帮助。 我想获得“音频信息”表格“系统音频输出流”,但是我发现这样做非常困难。 我已经找到了一些资源,但没有任何方法对我有帮助,或者对我无法掌握的方法有所帮助。 这是我到目前为止发现的以下资源。 如何以编程方式获取当前音频电平? http:
2回复

使用部分源代码反编译C#Exe

我维护着一个C#程序,但由于硬盘崩溃,我为已经部署的版本丢失了一大堆代码(这是我自己的错,因为没有足够频繁地推送git存储库),现在我必须对该程序。 我有较旧版本的程序的源代码,我想反编译exe并将其与较旧的源合并以恢复丢失的代码。 我知道我可以使用反射器之类的工具进行反编译,但是我不想用
2回复

TlbExp.exe错误:此程序集由运行时更新版本构建

我们将服务器的一部分移动到.net 4.0。 我们已经向Vs2010迈进了第一步,但没有改变任何项目的目标框架。 作为第二步,我将服务器的特定部分移动到目标4.0,以便我们可以使用一些新功能。 我在针对4.0的类库DLL上调用TLBexp.exe时遇到了问题。 此DLL还引用了许多以
5回复

使用LINQ读取变形的文件

以下LINQ读取定界文件。 当前,它仅输出recordId。 我希望它输出文件中的所有字段,以便可以对数据执行一些其他的LINQ操作。 例如,我想按recordId分组,按日期排序,并获取(x)结果。 我想返回csv中的所有字段。 是否需要像对FirstName,LastName和