UnauthorizedAccessException与SecurityException的区别

24

MSDN中FileStream的构造函数可能会抛出UnauthorizedAccessException或SecurityException异常。这是MSDN关于这些异常的说明。

UnauthorizedAccessException:当操作系统因为I/O错误或特定类型的安全错误而拒绝访问时抛出的异常。

SecurityException:当检测到安全错误时抛出的异常。

这两种类似的异常有何不同?什么情况会触发它们中的任何一个?

1个回答

14

当访问磁盘上的文件时发生权限错误时,会抛出一个 UnauthorizedAccessException异常。这是操作系统级别的错误,例如普通用户尝试覆盖操作系统文件(如kernel32.dll)。

SecurityException表示在CLR级别发生了安全违规。例如,如果您作为低访问权限的ClickOnce应用程序运行,并尝试读取/写入CLR安全设置为该进程禁止的文件系统位置,则会引发此异常。


那么如果我尝试在当前用户没有写入访问权限的网络驱动器上编写/创建文件,那么它会抛出UnauthorizedAccessException异常吗? - Eric Anastas
请添加更多的描述或示例以了解它们实际上的区别是什么? - Nirav Kamani
1
一些内置API(例如RegistryKey.OpenBaseKey)会抛出SecurityException异常(同时也会令人困惑地抛出UnauthorizedAccessException异常)。 - Dai

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接