现在我正在尝试获取计算机上运行的所有进程的启动时间。到目前为止我的代码是这样的:
foreach (Process item in Process.GetProcesses())
txtActivity.AppendText(item.StartTime.ToString());
问题是我遇到了这个错误:
System.ComponentModel.Win32Exception:“访问被拒绝”
到目前为止,我所看到的有关如何修复此错误的所有内容都没有帮助。我尝试使用管理员访问权限运行它,但这不起作用,并且在线程上使用所有其他建议的方法,例如this https://stackoverflow.com/questions/28708/process-starttime-access-denied其中一个要么无法工作,要么无法在我的机器上执行。对此问题的任何新帮助表示赞赏。
有些进程似乎是这样的,但我不知道到底为什么。您可以通过将代码包装在一个try/catch
,因此您可以查看引发异常的进程的名称。
例如
private static void Main()
{
foreach (Process item in Process.GetProcesses())
{
try
{
Console.WriteLine($"{item.ProcessName} started at: {item.StartTime}");
}
catch(Exception e)
{
WriteColoredLine($"{e.Message}: {item.ProcessName}", ConsoleColor.Red);
}
}
GetKeyFromUser("Done! Press any key to exit...");
}
private static void WriteColoredLine(string message, ConsoleColor color)
{
Console.ForegroundColor = color;
Console.WriteLine(message);
Console.ResetColor();
}
样本输出
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)