Win8下使用C#的Process类的StartTime属性出现Win32Exception错误

这几天系统由Win7换成Win8,就把原来写的程序运行了一下,结果发现一个原来运行正常的程序现在报错,原程序如下:

listBox1.Items.Clear();
Process[] processes = Process.GetProcesses();
foreach (Process p in processes)
{
if (p.Id != 0)
{
    listBox1.Items.Add(String.Format("{0,-30}{1:h:m:s}", p.ProcessName, p.StartTime));
}
}
错误信息

未处理System.ComponentModel.Win32Exception
  HResult=-2147467259
  Message=拒绝访问。
  Source=System
  ErrorCode=-2147467259
  NativeErrorCode=5


经过排查发现是Process类的StartTime属性引起的,难道是有些进程的StartTime属性禁止被访问?

果断加try-catch语句,变成:

listBox1.Items.Clear();
            Process[] processes = Process.GetProcesses();
            foreach (Process p in processes)
            {
                //if (p.ProcessName != "Idle")
                try
                {
                    //if (p.Id != 0)
                    //{
                    //    listBox1.Items.Add(String.Format("{0,-30}{1:h:m:s}", p.ProcessName, p.StartTime));
                    //}
                    listBox1.Items.Add(String.Format("{0,-30}{1}", p.ProcessName, p.StartTime));
                }
                catch (Exception ex)
                {
                }

成功!

随即发现如下进程被拒绝访问:

MsMpEng:拒绝访问。
SearchIndexer:拒绝访问。
atiesrxx:拒绝访问。
lsass:拒绝访问。
dwm:拒绝访问。
csrss:拒绝访问。
csrss:拒绝访问。
services:拒绝访问。
svchost:拒绝访问。
svchost:拒绝访问。
sqlwriter:拒绝访问。
winlogon:拒绝访问。
svchost:拒绝访问。
svchost:拒绝访问。
svchost:拒绝访问。
ZhuDongFangYu:拒绝访问。
WUDFHost:拒绝访问。
spoolsv:拒绝访问。
atieclxx:拒绝访问。
svchost:拒绝访问。
svchost:拒绝访问。
svchost:拒绝访问。
svchost:拒绝访问。
svchost:拒绝访问。
Fuel.Service:拒绝访问。
wininit:拒绝访问。
System:拒绝访问。
svchost:拒绝访问。
smss:拒绝访问。
Idle:拒绝访问。


但是以上进程在Win7中可以被访问,然后本人又实用管理员权限运行程序,发现只有:Idle:拒绝访问,ID:0

现在明白了是为什么了,Win8的权限管理比Win7更严格,所以导致了问题!!

你可能感兴趣的:(Win8下使用C#的Process类的StartTime属性出现Win32Exception错误)