C# 使用进程时出错(可能存在权限问题)。请从C开始#

C# 使用进程时出错(可能存在权限问题)。请从C开始#,c#,snort,C#,Snort,我正在尝试使用System.Diagnostics.Process从C#应用程序启动一个名为snort的应用程序,我需要捕获它的输出。为了实现这一点,我使用了下面的代码 当我尝试运行此程序时,会出现一个与加载配置文件有关的错误。如果我尝试在没有管理员权限的情况下从CMD手动运行exe,我会遇到同样的错误,因此我认为这是forked进程的权限问题,但我不能完全确定这一点。但是,我尝试了以下方法,但没有成功: 我已经添加到C#应用程序清单中(C#应用程序肯定是以管理员身份运行的) 我已尝试在Proc

我正在尝试使用System.Diagnostics.Process从C#应用程序启动一个名为snort的应用程序,我需要捕获它的输出。为了实现这一点,我使用了下面的代码

当我尝试运行此程序时,会出现一个与加载配置文件有关的错误。如果我尝试在没有管理员权限的情况下从CMD手动运行exe,我会遇到同样的错误,因此我认为这是forked进程的权限问题,但我不能完全确定这一点。但是,我尝试了以下方法,但没有成功:

  • 我已经添加到C#应用程序清单中(C#应用程序肯定是以管理员身份运行的)
  • 我已尝试在Process.StartInfo中使用用户名和密码
  • 然而,错误仍然存在。另外,为了清楚起见:进程已启动,我正在OutputHandler方法中接收输出,等等——问题在于forked exe,它在读取指定的配置文件时遇到问题

    示例代码如下所示:

    var process = new Process();
    
    process.StartInfo.FileName = @"C:\Snort\bin\snort.exe";
    process.StartInfo.Arguments = @"-A console -i2 -c C:\Snort\etc\snort.conf -l C:\Snort\log\ -K ascii";
    
    process.StartInfo.UseShellExecute         = false;
    process.StartInfo.RedirectStandardOutput  = true;
    process.StartInfo.RedirectStandardError   = true;
    process.OutputDataReceived               += new DataReceivedEventHandler(OutputHandler);
    process.ErrorDataReceived                += new DataReceivedEventHandler(OutputHandler);
    
    process.Start();
    process.BeginOutputReadLine();
    process.BeginErrorReadLine();
    process.WaitForExit();
    
    这确实会启动所需的进程,但正如我所提到的,该进程(snort)在尝试读取配置文件时会输出一个错误(如果我尝试在没有管理员权限的情况下从CMD手动运行同一进程,则会出现同样的错误——因此我认为问题可能是基于权限的)

    有人能给我提点别的建议吗?我可以试着绕开这件事。我确实需要捕获输出,所以(如果我理解正确的话)“runas”动词没有帮助


    谢谢你抽出时间

    我探索了一些选项,并尝试继续使用权限路径,更改了应用程序清单文件权限,并将标准权限文件替换为:

    requestedExecutionLevel=“requireAdministrator”uiAccess=“false”

    这并没有改变任何事情。 我使用的是windows 8.1,当我访问snort.exe文件的属性时,我更改了兼容性,运行了与win 7兼容的应用程序,并勾选了“以管理员身份运行”复选框,它现在运行正常


    非常感谢大家

    我探索了一些选项,并尝试继续使用权限路径,更改了应用程序清单文件权限,并将标准权限文件替换为:

    requestedExecutionLevel=“requireAdministrator”uiAccess=“false”

    这并没有改变任何事情。 我使用的是windows 8.1,当我访问snort.exe文件的属性时,我更改了兼容性,运行了与win 7兼容的应用程序,并勾选了“以管理员身份运行”复选框,它现在运行正常


    非常感谢大家

    好吧,你应该试着给正在运行它的用户配置文件的权限。。。。。。当然?或者将它们复制到它也有权访问的位置,并将该路径传递到标题中如果这不是问题,您可以查看路径变量,以防帐户之间的路径不同,并且指定了与此相关的配置文件?您确定问题不是由未初始化
    进程.StartInfo.WorkingDirectory
    引起的吗?然后,您可以使用Process Explorer检查新进程(以及您的程序)运行时使用的凭据吗?您是否尝试使用版本配置运行您的程序?@MetaColon:版本配置应该如何帮助您?您应该尝试授予正在运行的用户对配置文件的权限。。。。。。当然?或者将它们复制到它也有权访问的位置,并将该路径传递到标题中如果这不是问题,您可以查看路径变量,以防帐户之间的路径不同,并且指定了与此相关的配置文件?您确定问题不是由未初始化
    进程.StartInfo.WorkingDirectory
    引起的吗?然后,您是否可以使用Process Explorer检查新进程(以及您的程序)运行时使用的凭据?您是否尝试使用版本配置运行您的程序?@MetaColon:版本配置应该如何帮助?