尝试获取进程开始时间时“拒绝访问”

时间:2019-01-12 01:21:12

标签: c# process permissions

现在,我正在尝试获取计算机上正在运行的所有进程的开始时间。到目前为止,我拥有的代码是:

foreach (Process item in Process.GetProcesses())
            {
                txtActivity.AppendText(item.StartTime.ToString());
            }

问题是我遇到此错误:

System.ComponentModel.Win32Exception: 'Access is denied'

到目前为止,我所见到的有关如何解决此错误的所有信息都无济于事。我尝试使用Admin访问权限运行它,但该方法不起作用,并且在this之类的线程上提出的所有其他建议方法都没有起作用,或者无法在我的计算机上执行。感谢您对此问题的任何新鲜帮助。

2 个答案:

答案 0 :(得分:2)

某些进程的行为似乎是这样,但我不知道为什么。您可以通过将代码包装在Spliterators中来找出正在执行哪些操作,以便查看引发异常的进程的名称。

例如

Spliterators

示例输出

enter image description here

答案 1 :(得分:0)

在 Windows 中,一些进程属性受到保护,它们被称为“安全属性” 而 Process.StartTime 是安全属性之一。

如果应用程序用户是性能日志用户组的成员或在计算机安全策略中启用它,您只能读取安全属性。

启用此功能

  1. 单击“开始”,在“搜索”框中单击,键入 secpol.msc,然后按 Enter。本地安全策略管理单元将在 Microsoft 管理控制台中打开。

  2. 在导航窗格中,展开本地策略并点击用户权限分配

  3. 在控制台窗格中,右键单击作为批处理作业登录,然后单击属性。

  4. 在“属性”页面中,单击“添加用户或组”。

  5. 在“选择用户或组”对话框中,单击“对象类型”。在“对象类型”对话框中选择“组”,然后单击“确定”。

  6. 在“选择用户或组”对话框中键入性能日志用户,然后单击“确定”。

  7. 在属性页面中,单击“确定”。