Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/309.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
当我在命令行上手动运行My.exe时,它会清除事件查看器日志,但当我从C#代码调用它时,它不会清除_C#_.net_Process_Console_Psexec - Fatal编程技术网

当我在命令行上手动运行My.exe时,它会清除事件查看器日志,但当我从C#代码调用它时,它不会清除

当我在命令行上手动运行My.exe时,它会清除事件查看器日志,但当我从C#代码调用它时,它不会清除,c#,.net,process,console,psexec,C#,.net,Process,Console,Psexec,我有一个清除Windows事件查看器系统日志的工具。我可以在命令行上通过执行EventViewer.exe-args调用此工具,其中-args是我要运行的命令。例如,如果我想清除日志,我可以将-args替换为“clear”,它将清除系统的日志。在本例中,我已硬编码EventViewer.exe以清除特定远程计算机的日志。基本上,我登录到机器A。在机器A上,我从命令行运行EventViewer.exe clear,它会清除机器B的日志 问题是在计算机A上运行我的C#代码无法正确运行EventVie

我有一个清除Windows事件查看器系统日志的工具。我可以在命令行上通过执行EventViewer.exe-args调用此工具,其中-args是我要运行的命令。例如,如果我想清除日志,我可以将-args替换为“clear”,它将清除系统的日志。在本例中,我已硬编码EventViewer.exe以清除特定远程计算机的日志。基本上,我登录到机器A。在机器A上,我从命令行运行EventViewer.exe clear,它会清除机器B的日志

问题是在计算机A上运行我的C#代码无法正确运行EventViewer.exe。我正在尝试启动一个进程,用“clear”参数启动EventViewer.exe。它打开控制台窗口并显示它开始执行,但似乎在执行完成之前就关闭了。以下是EventViewer.exe中清除日志的方法:

private static void clear()
{
    Process.Start(@"C:\Testing\PsExec.exe", "\\\\192.168.1.200 -u Administrator -p \"\" C:\\Testing\\EventViewer.exe -clear System");
}
当我在命令行上清除EventViewer.exe时,该方法会被触发,并且运行良好。它清除该机器的系统日志条目。那是机器B。但是当我在机器A上运行一些C#代码时,它的工作方式与我通过命令行手动执行该exe时的工作方式不同。这是我试图在机器A上运行的C代码

Process proc = new Process();
proc.StartInfo.FileName = @"C:\Testing\EventViewer.exe";
proc.StartInfo.Arguments = "clear";
proc.Start();
我也尝试过这样运行它:

Process.Start(@"C:\Testing\EventViewer.exe", "clear");
但它不起作用。一个控制台窗口打开,我可以看到它正试图连接到\192.168.1.200,就像我手动运行命令时通常做的那样,但随后它停止,我的其余代码执行并执行不相关的操作。知道怎么了吗?为什么我不能使用该参数作为进程完全执行.exe


编辑:仔细查看后,显示“访问被拒绝”,然后控制台关闭。当从代码内部执行EventViewer.exe时会发生这种情况。但是当我手动执行它时,它执行得很好…

试着以管理员身份运行?@Jacobr365我试过以管理员身份运行它,运气不好。我做了proc.UseShellExecute=true和proc.Verb=“runas”,但没有什么区别。我想这就是你让它以管理员的身份运行的方法,对吧?试着把.exe放在与c#程序相同的文件夹中。@Jacobr365我可以考虑这样做,但我认为这无关紧要。代码开始正确执行PsExec,但PsExec声称访问被拒绝。为什么将EventViewer.exe放在同一文件夹中会改变这一点?根据您的c#代码,它可能没有访问.exe的权限。