System.UnauthorizedAccessException(第一次机会异常)

时间:2013-06-18 06:56:05

标签: c# exception

我正在接受

  

类型'System.UnauthorizedAccessException'的第一次机会异常   发生在mscorlib.dll

这段代码的异常:

string[] filesList = Directory.GetFiles(@"C:\Program Files (x86)\", "*.exe",
                                         SearchOption.AllDirectories);

它正在做的是列出所有带有.exe扩展名的文件,虽然对于某些目录它可以工作,但有些它会抛出它。

我将非常感谢任何关于如何解决问题的想法!

3 个答案:

答案 0 :(得分:5)

您需要以管理员身份运行您的应用。

这是他正确的方法:

http://blogs.msdn.com/b/nikhiln/archive/2007/04/19/embed-a-manifest-to-make-an-application-elevate-in-vista.aspx

答案 1 :(得分:3)

在某些版本的Windows上,程序文件目录已被很好地锁定。这可以防止错误的用户损坏正确运行OS所必需的文件系统部分。如果您使用提升的权限运行调试器(和应用程序),那么它将通过。

答案 2 :(得分:3)

如果您使用Vista,程序文件文件夹受操作系统UAC保护。

  

在假设用户将要运行的情况下编写的应用程序   具有管理员权限在早期版本中遇到问题   Windows从有限的用户帐户运行时,通常是因为它们   试图写入机器范围或系统目录(例如   程序文件)或注册表项。 UAC试图缓解这种情况   使用文件和注册表虚拟化,重定向写入(和   后续读取)到用户个人资料中的每个用户位置。   例如,如果应用程序尝试写入“C:\ program   files \ appname \ settings.ini“,用户没有权限   写入该目录,写入将被重定向到   “C:\ Users \ username \ AppData \ Local \ VirtualStore \ Program Files \ appname \ settings.ini”

请注意,Program Files是特殊文件夹。如果要获取其路径,可以使用Environment.SpecialFolder枚举。等;

Environment.GetFolderPath(Environment.SpecialFolder.ProgramFiles)