- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一些 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/
在我的系统上,%AppData%导致 ApplicationData这是 C:\Users\\AppData\Roaming 但是还有C:\Users\\AppData\Local 还有一些困惑D:\
我对这两个特殊文件夹之间的区别感到困惑。 这是一个代码片段,其中写入了每个输出,但它们输出的是相同的东西。 string path = Environment.GetFolderPath(Enviro
我正在使用 VS2013 Express for Desktop 和 Windows Forms。 我正在关注 this MSDN Walkthrough "Creating an Explorer
我有一个项目,我必须在开始菜单中创建快捷方式。为此,我必须获取由 获取的开始菜单的路径 Environment.SpecialFolder.Commonstartmenu 或 Environment.
我的桌面应用程序需要从存储在 ProgramData 文件夹(在 Win 7 中)的文件中存储和检索数据。无论操作系统是 Win 7 还是 Win XP,如何访问 Environment.Specia
我正在将文件保存到 Xamarin 中的 System.Environment.SpecialFolder.Personal。它似乎成功了,因为我可以立即从文件中提取数据。但是,我无法在手机上浏览和找
我希望我的命令行程序采用以下形式的文件参数: -out:%MyDocuments%\dummy.xps 并让 %MyDocuments% 自动替换为: Environment.GetFolderPat
我正在尝试获取当前登录用户的应用程序数据文件夹的路径。 我正在使用 Environment.GetFolderPath(Environment.SpecialFolder.ApplicationDat
我想从我的 WinForms ToolStrip 菜单访问我的“我的文档”文件夹。我正在使用 XML 文件填充 ToolStrip。我将 Environment.GetFolderPath(Envir
我将如何输入一个字符串来替换 (Environment.SpecialFolder.ApplicationData) 因为 .ApplicationData 部分需要根据传递给它的变量进行更改。 st
我正在尝试通过我的应用程序中的 SpecialFolder(Environment.SpecialFolder.StartMenu 和 Environment.SpecialFolder.Deskto
当我执行这条语句时: string folderPath = Environment.GetFolderPath(Environment.SpecialFolder.CommonDocument
我刚开始学习单声道,所以它对我来说是新的。我有两个问题。第一的:Mac 和 Linux 是否支持 Environment.SpecialFolder?第二个问题:您可以推荐阅读哪些博客或网站来研究单声
默认情况下,我们的Windows Forms应用程序将数据文件保存在用户的“我的文档”文件夹(在XP中)或“文档”文件夹(在Vista中)中。我们通过调用以下命令查找此位置: Environment.
我正在开发一个 C# 项目,我正在使用以下代码 string rootPath = Environment.GetFolderPath(Environment.SpecialFolder.Progra
我有一个奇怪的问题:我的 .NET 4.0 WPF 应用程序正在将数据保存到 ApplicationData 文件夹。 Environment.GetFolderPath(Environment.S
我正在使用 SHFileInfo 检索文件和文件夹的系统图标,但是我发现特殊文件夹没有返回正确的文件夹图标。 例如,桌面文件夹将返回与常规文件夹相同的文件夹图标,而不是桌面图标,我的电脑图标看起来像旧
这些命名空间中的魔法路径有什么区别: Environment.SpecialFolder.LocalApplicationData 对比 Application.LocalUserAppDataPat
我一直在尝试大部分 Enviroment.SpecialFolder 枚举,但我认为没有任何方法可以通过枚举。使用 string.Substring() 方法给我带来了最大的收获。 我尝试只获取实际安
是否可以在 UWP 应用程序中使用 Environment.SpecialFolder?我正在尝试将数据库存储在 AppData 文件夹中,而不是 Windows.Storage.Applicatio
我是一名优秀的程序员,十分优秀!