【发布时间】:2021-04-08 11:39:02
【问题描述】:
无论我是否以管理员身份运行应用程序,在尝试搜索“程序文件”文件夹中的特定文件时,我总是会收到 System.UnauthorizedAccessException 异常。
代码长这样,异常发生在System.IO.Directory.GetFiles(..)
//--- Find folders Application path
{
try
{
string searchfile = "terminal64.exe";
string searchdir = Environment.GetFolderPath(Environment.SpecialFolder.ProgramFiles);
string[] files = System.IO.Directory.GetFiles(searchdir, searchfile, System.IO.SearchOption.AllDirectories);
for (int i = 0; i < files.Length; i++)
{
string result = files[i];
int p=result.IndexOf(searchfile);
if (p>0)
{
result = result.Substring(0, p);
AddTargetFolder(result);
}
}
}
catch
{
}
}
我使用的是 Visual Studio 2019。在调试器(VS 以管理员身份执行)以及执行最终的 .exe 文件时引发异常。
非常感谢任何帮助。
【问题讨论】:
-
哪一行抛出异常?是 GetFolderPath、GetFiles 还是其他地方?
-
Program Files 文件夹本身和许多子文件夹受系统保护。当 GetFiles 尝试读取有关该文件夹中安全条目的信息时,它无法避免异常。
-
如前所述,它的 GetFiles() 函数会引发异常。其实我只需要第一级,没有更多的子文件夹。除了 GetFiles() 还有其他方法吗?