我试图使用以下代码在Win7上获取正在运行的进程/会话列表,该代码位于Internet中。但它不起作用?我没有任何编译错误。
namespace CurrentProcessesLister
{
class Program
{
static void Main(string[] args)
{
Process[] runningProcesses = Process.GetProcesses();
var currentSessionID = Process.GetCurrentProcess().SessionId;
Process[] sameAsthisSession = (from c in runningProcesses where c.SessionId == currentSessionID select c).ToArray();
foreach (var p in sameAsthisSession)
{
Trace.WriteLine(p.ProcessName);
}
}
}
}
答案 0 :(得分:7)
“控制台中没有输出”
然后替换
Trace.WriteLine(p.ProcessName);
带
Console.WriteLine(p.ProcessName);
但如果你还没有看到任何东西,那么就该开始使用调试器了。
答案 1 :(得分:1)
问题是您使用Trace.WriteLine
输出文本。这用于程序跟踪,默认情况下不会在控制台中显示。请改用Console.WriteLine
。
foreach (var p in sameAsthisSession)
{
Console.WriteLine(p.ProcessName);
}
答案 2 :(得分:1)
这是一种快速而又脏的方式......
Process[] proc = Process.GetProcesses();
foreach(Process theprocess in proc)
{
Console.WriteLine("Process: {0} ID: {1}", theprocess.ProcessName, theprocess.Id);
}
答案 3 :(得分:0)
为了进一步扩展之前的帖子提到的内容,跟踪输出确实显示,但您需要查看Visual Studio中的调试器输出窗口。您最初发布的代码确实列出了输出窗口中Debug部分下的进程。
'ConsoleApplication1.Program ..''ConsoleApplication1.vshost.exe' (管理(v4.0.30319)):已加载 'C:\ Windows \ Microsoft.Net \组件\ GAC_MSIL \ System.Configuration \ v4.0_4.0.0.0__b03f5f7f11d50a3a \ System.Configuration.dll', 跳过加载符号。模块已优化并具有调试器选项 “Just My Code”已启用 devenv的
Winlogon中 等...