2009-11-20 321 views
3

我列出系統中所有正在運行的進程,並使用完整路徑。我的應用程序在XP中運行良好,但在Vista中,它在訪問MainModule.FileName時給予訪問拒絕異常。 (由於UAC,我認爲)。訪問process.MainModule.FileName時訪問被拒絕異常

foreach (Process process in Process.GetProcesses()) 
{ 
    sProcess = process.ProcessName; 
    sFullpath = process.MainModule.FileName; 
.. 
.. 
.. 
    } 

我沒有找到解決方案來處理UAC。任何線索?

+0

23天沒有答案!奇怪!!! – Manjoor 2010-03-05 14:02:28

+0

[獲取進程路徑時拒絕訪問]的可能重複(https://stackoverflow.com/questions/3399819/access-denied-while-getting-process-path) – wimh 2017-07-12 14:45:55

+0

看看日期,我正面臨問題 – Manjoor 2017-07-12 22:54:37

回答

2

它可能根本不是UAC。這可能是你的進程是x32,被查詢的進程是x64,反之亦然。 process.MainModule似乎嗆,當發生這種情況與Win32Exception,「只有一部分的ReadProcessMemory或WriteProcessMemory請求已完成」

難道是這樣嗎?

+0

今天我有同樣的問題。似乎設置目標平臺爲任何解決它給我。 – 2010-06-24 05:24:11

+0

當Target是x86(使用某些無法在64位模式下工作的32位dll)並且該應用程序在x64上運行時,是否有可能解決此問題? – Muxa 2010-08-22 09:44:50

0

爲了增加DJA的回答,Process.MainModule使用EnumProcessModules API:

如果目標模塊列表進程已損壞或尚未初始化,或者如果因加載或卸載DLL導致函數調用期間模塊列表發生更改,EnumP rocessModules可能會失敗或返回不正確的信息

因此,您可能試圖在目標進程不穩定時使用此函數,從而獲得ERROR_PARTIAL_COPY(299)。