我正在尝试通过我的应用程序中的SpecialFolder(Environment.SpecialFolder.StartMenu和Environment.SpecialFolder.DesktopDirectory)进行recursion,并且它适用于英语安装。
不过,我在非英文版安装中遇到以下问题:
当我使用非本地化的path时,我得到UnauthorizedAccessException我试图访问任何子文件夹
如果我本地化Environment.GetFolderPath的结果并尝试获取子目录的列表,我在本地化的path上得到一个DirectoryNotFoundException 。 本地化path的一个例子:
原始 – > C:\ Users \ tony \ AppData \ Roaming \ Microsoft \ Windows \ Start Menu
本地化 – > C:\ Utilisateurs \ Tony \ AppData \ Roaming \ Microsoft \ Windows \ MenuDémarrer
我使用Environment.GetFolderPath获取目录,然后使用以下方法search特定文件的位置:
private static IEnumerable<string> LocateAppShortcut(string dir) { foreach (string directory in Directory.GetDirectories(dir)) { foreach (string file in Directory.GetFiles(directory, "MyApp.appref-ms")) { yield return file; } foreach (string file in LocateAppShortcut(directory)) { yield return file; } } }
我正在寻找一种方法,使我可以通过由Environment.GetFolderPath返回的目录path,当给定的起点,其中起始目录可以包含重新分析和/或联结点的可靠性recurse。
AFAIK,本地化的系统文件夹只是别名,如果你运行一个cmd和目录你的主驱动器,你会看到“用户”文件夹被称为“用户”,独立于你的系统语言,所以检查你的路径。 我已经证实了这一点,因为我的系统是用西班牙语配置的:
C:\>dir El volumen de la unidad C es ---------- El número de serie del volumen es: --------- Directorio de C:\ 10/12/2013 12:26 <DIR> inetpub 06/10/2013 17:51 <DIR> Intel 18/02/2014 14:34 <DIR> Mis lugares Web 03/12/2013 17:52 <DIR> NVIDIA 22/08/2013 17:22 <DIR> PerfLogs 24/02/2014 14:35 <DIR> Program Files 12/06/2014 09:18 <DIR> Program Files (x86) 18/09/2013 20:41 <DIR> Toshiba 10/12/2013 12:42 <DIR> Users 11/04/2014 15:08 <DIR> Windows 0 archivos 0 bytes 11 dirs 664.620.318.720 bytes libres C:\>
我没有足够的数据来诊断您的问题,但是您可以通过从FolderBrowserDialog获取随机路径并传递它们来调试您的函数,查看其中哪些工作,哪些不工作,看看它是否是主要调用这是失败或是其中一个递归…