對程式檔案中的 System.UnauthorizedAccessException 錯誤進行故障排除
執行位於 Program Files 目錄中的執行檔 (.exe) 通常會產生 System.UnauthorizedAccessException
。這個常見問題是由目錄固有的安全限制引起的。
理解錯誤訊息
檢查事件日誌通常會揭示根本原因:
<code>Exception Info: System.UnauthorizedAccessException at System.IO.__Error.WinIOError(Int32, System.String) at System.IO.FileStream.Init(System.String, System.IO.FileMode, System.IO.FileAccess, Int32, Boolean, System.IO.FileShare, Int32, System.IO.FileOptions, SECURITY_ATTRIBUTES, System.String, Boolean, Boolean, Boolean)</code>
這表示嘗試寫入受保護位置的檔案。 預設情況下,程式檔案限制未提升權限的使用者的寫入存取權限。
解決存取問題
最有效的解決方案是完全避免寫入 Program Files 目錄。 利用替代的、使用者特定的位置,例如 ApplicationData 資料夾:
<code>Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData)</code>
如果寫入程式檔案是絕對必要的,則以管理權限執行可執行檔將授予覆蓋預設檔案存取限制所需的權限。
更多資源
要更深入了解文件權限和提升的權限,請參閱以下 Microsoft 文件:
以上是為什麼從程式檔案執行 EXE 時出現 System.UnauthorizedAccessException?的詳細內容。更多資訊請關注PHP中文網其他相關文章!