1. 程式人生 > >在Window2003上執行System.Diagnostics.Process.GetProcessesByName等方法失敗的原因

在Window2003上執行System.Diagnostics.Process.GetProcessesByName等方法失敗的原因

在Windows2003上執行 System.Diagnostics.Process.GetProcessesByName等方法會報出Exception:
Couldn't get process information from remote machine.

這個錯誤的原因是: 獲取Process與Performance Counter相關, 當前的執行使用者不是Administrator 組成員
MSDN的解釋:1.Performance information is not available to a non-admin account, which is not in the Performance Counter Users Group on Windows Server 2003. So the Process class could not get process performance information in this case.

2.Getting performance data from all the processes on the machine is pretty expensive. The operating system (OS) might load lots of DLLs and it might take seconds to complete. The floppy drive light will be on when the OS tries to find the index for some performance counter.
3.f the performance counter data was corrupted for any reason, the Process class could throw an exception while trying to convert some raw performance information into DateTime.

4.The Process class could not be used to get process information on machines without the process performance counter. Performance counters can be disabled in Windows. See the following link for details: http://www.microsoft.com/windows2000/techinfo/reskit/en-us/default.asp?url=/windows2000/techinfo/ reskit/en-us/regentry/94214.asp

The good news is that we have changed the implementation of the Process class in Visual Studio 2005 (our next release, code-named Whidbey). The Process class doesn't have a dependency on performance counter information any more (this is only true for local processes).

相關連結:

http://msdn.microsoft.com/netframework/programming/bcl/faq/SystemDiagnosticsProcessFAQ.aspx