亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在C#中訪問Process.MainModule.FileName時如何避免Win32異常?

在C#中訪問Process.MainModule.FileName時如何避免Win32異常?

HUH函數 2019-11-18 13:07:24
我開始了一個新項目,列出了所有正在運行的進程的完整路徑。訪問某些進程時,程序崩潰并拋出Win32Exception。描述說列出過程模塊時發生錯誤。最初,我認為可能會出現此問題,因為我正在64位平臺上運行它,因此我針對x86和AnyCPU類型的CPU重新編譯了它。我遇到了同樣的錯誤。Process p = Process.GetProcessById(2011);string s = proc_by_id.MainModule.FileName;錯誤發生在第2行??瞻鬃侄物@示發生錯誤的進程: 屏幕截圖有什么辦法可以解決此錯誤消息?
查看完整描述

3 回答

?
互換的青春

TA貢獻1797條經驗 獲得超6個贊

當您嘗試訪問該MainModule屬性時,將引發異常。該屬性的文檔未列出Win32Exception可能的例外,但是查看該屬性的IL顯然可以發現,訪問它可能會引發此異常。通常,如果您嘗試執行操作系統中不可能或不允許的操作,它將拋出此異常。


Win32Exception具有該屬性,NativeErrorCode并且還Message可以解釋問題所在。您應該使用該信息來解決問題。NativeErrorCode是Win32錯誤代碼。我們可以整日猜測問題出在哪里,但是真正解決這個問題的唯一方法是檢查錯誤代碼。


但是要繼續猜測,這些異常的來源之一是從32位進程訪問64位進程。這樣做會引發Win32Exception以下消息:


32位進程無法訪問64位進程的模塊。


您可以通過評估獲得過程的位數Environment.Is64BitProcess。


即使以64位進程運行,也永遠不允許您訪問MainModule進程4(系統)或進程0(系統空閑進程)。這將引發Win32Exception以下消息:


無法枚舉過程模塊。


如果您遇到的問題是要在任務管理器中創建類似于進程列表的進程列表,則必須以特殊方式處理進程0和4,并給它們指定特定的名稱(就像任務管理器一樣)。請注意,在Windows的舊版本上,系統進程的ID為8。


查看完整回答
反對 回復 2019-11-18
  • 3 回答
  • 0 關注
  • 2486 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號