这几天系统由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更严格,所以导致了问题!!