我正在接受
类型'System.UnauthorizedAccessException'的第一次机会异常 发生在mscorlib.dll
这段代码的异常:
string[] filesList = Directory.GetFiles(@"C:\Program Files (x86)\", "*.exe",
SearchOption.AllDirectories);
它正在做的是列出所有带有.exe扩展名的文件,虽然对于某些目录它可以工作,但有些它会抛出它。
我将非常感谢任何关于如何解决问题的想法!
答案 0 :(得分:5)
您需要以管理员身份运行您的应用。
这是他正确的方法:
答案 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)