【发布时间】:2017-06-04 01:05:47
【问题描述】:
这是我的代码:
private void CheckLastLogon(string computername)
{
string cmd = $"/C query user /server:{computername}";
System.Diagnostics.Process proc = new System.Diagnostics.Process();
proc.StartInfo.FileName = "cmd.exe";
proc.StartInfo.Arguments = cmd;
proc.StartInfo.UseShellExecute = false;
proc.StartInfo.CreateNoWindow = true;
proc.StartInfo.RedirectStandardOutput = true;
proc.Start();
string output = proc.StandardOutput.ReadToEnd();
proc.WaitForExit();
}
output 总是string.Empty,我不知道为什么...(它在CMD 中工作)。
可能是我命令中/c 的原因?它终止到快吗?
我的错误在哪里?
更新 1:
重定向ErrorOutput 后,我得到了一些额外的信息。
我添加了错误输出,它说找不到命令“查询”
那么我的命令有什么问题?
在这里你看到它在 cmd 中工作:
更新 2:如果我从我的命令中删除 /c,它不会做任何事情。如果我破坏调试器,它会在proc.StandardOutput.ReadToEnd(); 等待
一段时间后我收到了ContextSwitchDeadlock ...
这有什么可怕的错误?
【问题讨论】:
-
如果你删除
/C然后呢? -
那么它不会以某种方式终止......
-
试试 Filename
C:\Windows\System32\query.exeArgsuser /server:{computername},其余的保持原样 -
我可以在 FileExplorer 中找到
query.exe,但不知何故我在proc.Start()上得到了Win32Exception... -
ShellExecute 真/假?