C# 无法获取正在运行/当前进程的列表?

C# 无法获取正在运行/当前进程的列表?,c#,session,process,C#,Session,Process,我正在尝试使用以下代码获取我的Win7计算机上正在运行的进程/会话列表,这些代码可以在internet上找到。但是它不起作用?我没有任何编译错误 namespace CurrentProcessesLister { class Program { static void Main(string[] args) { Process[] runningProcesses = Process.GetProcesses(); v

我正在尝试使用以下代码获取我的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); 
          }
      }
  }
}
“控制台中没有输出”

然后替换

Trace.WriteLine(p.ProcessName); 

但是如果您仍然没有看到任何内容,那么是时候开始使用调试器了

“控制台中没有输出”

然后替换

Trace.WriteLine(p.ProcessName); 


但是如果您仍然没有看到任何内容,那么是时候开始使用调试器了

问题是您正在使用
Trace.WriteLine
输出文本。这用于程序跟踪,默认情况下不会显示在控制台中。改用
控制台。WriteLine

  foreach (var p in sameAsthisSession) 
  { 
      Console.WriteLine(p.ProcessName); 
  }

问题是您正在使用
Trace.WriteLine
输出文本。这用于程序跟踪,默认情况下不会显示在控制台中。改用
控制台。WriteLine

  foreach (var p in sameAsthisSession) 
  { 
      Console.WriteLine(p.ProcessName); 
  }

为了进一步扩展前面的文章所提到的内容,跟踪输出确实会显示出来,但是您需要查看VisualStudio中的调试器输出窗口。您最初发布的代码确实在“输出”窗口的“调试”部分下列出了进程

'ConsoleApplication1.Program..'ConsoleApplication1.vshost.exe' (托管(v4.0.30319)):已加载 'C:\windows\Microsoft.Net\assembly\GAC\U MSIL\System.Configuration\v4.0.0.0\UUU b03f5f7f11d50a3a\System.Configuration.dll', 已跳过加载符号。模块已优化,调试器选项 “仅我的代码”已启用。
devenv
登录进程 等等


为了进一步扩展前面的文章所提到的内容,跟踪输出确实会显示出来,但是您需要查看VisualStudio中的调试器输出窗口。您最初发布的代码确实在“输出”窗口的“调试”部分下列出了进程

'ConsoleApplication1.Program..'ConsoleApplication1.vshost.exe' (托管(v4.0.30319)):已加载 'C:\windows\Microsoft.Net\assembly\GAC\U MSIL\System.Configuration\v4.0.0.0\UUU b03f5f7f11d50a3a\System.Configuration.dll', 已跳过加载符号。模块已优化,调试器选项 “仅我的代码”已启用。
devenv
登录进程 等等


这是一条又快又脏的路

  Process[] proc = Process.GetProcesses();
  foreach(Process theprocess in proc)
  {
    Console.WriteLine("Process: {0} ID: {1}", theprocess.ProcessName, theprocess.Id);
  }

这是一条又快又脏的路

  Process[] proc = Process.GetProcesses();
  foreach(Process theprocess in proc)
  {
    Console.WriteLine("Process: {0} ID: {1}", theprocess.ProcessName, theprocess.Id);
  }

哎哟,请把你的代码格式化到可读的地方。这让回答你的问题变得容易多了。结果是什么?(顺便说一句)非常感谢。我只是在代码文本中添加了
,但不知道格式。您是如何格式化的?嗨,OSH,控制台中没有输出:(哎哟,请将您的代码格式化到可读的位置。这会使回答您的问题更容易。输出是什么?(格式不错,顺便说一句)非常感谢。我刚刚在代码文本中添加了
,但不知道格式。您是如何格式化的?嗨,OSH,控制台中没有输出:(很抱歉,我总是使用Ctrl+F5而不是F5。我已经看到了。我如何才能获得正在运行的会话的动态/实时列表?这意味着您希望该列表不断更新,而不是只运行一次?最简单的方法是定期循环代码,并找出一些显示方法,无论是否将新列表附加到end或执行更复杂的操作。抱歉,我总是使用Ctrl+F5而不是F5。我已经看到了。我如何获得运行会话的动态/实时列表?这意味着您希望该列表不断更新,而不是只运行一次?最简单的方法是定期循环代码,并制定一些显示方法,无论是否运行将新列表追加到末尾或做一些更复杂的事情。