gpt4 book ai didi

c# - 由于域文件夹重定向,在 Environment.SpecialFolder.Favorites 上调用 Directory.GetDirectories 时出现 DirectoryNotFoundException

转载 作者:行者123 更新时间:2023-11-30 12:53:59 27 4
gpt4 key购买 nike

我有一些 C# 代码试图获取当前登录用户的收藏夹。该代码是加载到 Windows 资源管理器进程中的任务栏工具栏的一部分。我有一个用户正在使用启用了 UAC 的 Windows Vista,该域具有漫游配置文件或文件夹重定向设置并已启用。在收藏夹路径上调用 Directory.GetDirectories 时,它会抛出“System.IO.DirectoryNotFoundException:无法找到路径‘C:\Users\\Favorites\”的一部分。其他域中没有漫游配置文件或文件夹重定向设置的其他用户不会遇到此问题。

用户还报告说,将失败日志中的路径复制到运行提示中无法加载路径,但如果他们直接使用资源管理器导航到该路径,然后将该路径复制并粘贴到运行提示中,则可以正常工作。他向我发送了两条路径,它们完全相同,这根本没有任何意义。

我的理论是,这是由文件夹重定向引起的,其中该路径实际上指向服务器上的共享,但在尝试访问子目录(从 Directory.GetDirectories 返回的 directoryInfo 的)时重定向失败。初始目录有效,但初始目录的所有子目录都无法正确重定向。

有没有人遇到过这样的情况和/或知道获得对重定向文件夹的正确访问权限的解决方法?

private void GetFavorites()
{
try
{
System.IO.DirectoryInfo dirInfo = new System.IO.DirectoryInfo(Environment.GetFolderPath(Environment.SpecialFolder.Favorites));
AddFavorites(dirInfo);
}
catch
{
}
}

private void AddFavorites(DirectoryInfo dirInfo)
{
foreach (System.IO.FileInfo fileInfo in dirInfo.GetFiles("*.url"))
{
//string alias = fileInfo.Name.Replace(".url", "");

if (!ItemsBookmarks.ContainsKey(fileInfo.Name))
ItemsBookmarks.Add(fileInfo.Name, fileInfo.Name);

}

foreach (System.IO.FileInfo fileInfo in dirInfo.GetFiles("*.lnk"))
{

if (!ItemsBookmarks.ContainsKey(fileInfo.Name))
ItemsBookmarks.Add(fileInfo.Name, fileInfo.Name);

}

foreach (System.IO.DirectoryInfo objDir in dirInfo.GetDirectories())
{
AddFavorites(objDir);
}
}

谢谢,

约翰

最佳答案

我相信您遇到的问题与重分析点有关。

参见:http://msdn.microsoft.com/en-us/library/bb513869.aspx

参见:What is the best way to check for reparse point in .net (c#)?

这个问题可以通过使用下面的语法来避免:

private void AddFavorites(string dirPath)
{
try
{
foreach (string fileName in Directory.GetFiles(dirPath, "*.*", SearchOption.TopDirectoryOnly))
{
//string alias = fileInfo.Name.Replace(".url", "");

if (!ItemsBookmarks.ContainsKey(fileInfo.Name))
{
ItemsBookmarks.Add(fileName);
}
}

foreach (string subDirName in Directory.GetDirectories(dirPath, "*.*", SearchOption.TopDirectoryOnly))
{
AddFavorites(objDir);
}
}
catch
{
//error getting files or subdirs... permissions issue?
//throw
}
}

关于c# - 由于域文件夹重定向,在 Environment.SpecialFolder.Favorites 上调用 Directory.GetDirectories 时出现 DirectoryNotFoundException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1060981/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com