对程序文件中的 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中文网其他相关文章!