dmc*_*mck 8 .net c# windows filesystems winapi
我试图通过我的应用程序中的SpecialFolder(Environment.SpecialFolder.StartMenu和Environment.SpecialFolder.DesktopDirectory)进行递归,它适用于英语安装.
但是我在非英语安装上遇到以下问题:
当我使用非本地化路径时,我尝试访问的任何子文件夹都会收到UnauthorizedAccessException
如果我本地化Environment.GetFolderPath的结果并尝试获取子目录列表,我会在本地化路径上获得DirectoryNotFoundException.本地化路径的示例:
原始 - > C:\ Users\tony\AppData\Roaming\Microsoft\Windows\Start Menu
本地化 - > C:\ Utilisateurs\tony\AppData\Roaming\Microsoft\Windows \MenuDémarrer
我使用Environment.GetFolderPath获取目录,然后使用以下方法搜索特定文件的位置:
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;
}
}
}
Run Code Online (Sandbox Code Playgroud)
我正在寻找一种方法,当给定起始目录可以包含重新分析和/或结点时,我可以通过Environment.GetFolderPath返回的目录路径可靠地递归.
小智 1
AFAIK,本地化的系统文件夹只是别名,如果您运行 cmd 并 dir 您的主驱动器,您将看到“users”文件夹被称为“Users”,与您的系统语言无关,因此请检查您的路径。我已经确认了这一点,因为我的系统是用西班牙语配置的:
\n\nC:\\>dir\n El volumen de la unidad C es ----------\n El n\xc3\xbamero de serie del volumen es: ---------\n\n Directorio de C:\\\n\n10/12/2013 12:26 <DIR> inetpub\n06/10/2013 17:51 <DIR> Intel\n18/02/2014 14:34 <DIR> Mis lugares Web\n03/12/2013 17:52 <DIR> NVIDIA\n22/08/2013 17:22 <DIR> PerfLogs\n24/02/2014 14:35 <DIR> Program Files\n12/06/2014 09:18 <DIR> Program Files (x86)\n18/09/2013 20:41 <DIR> Toshiba\n10/12/2013 12:42 <DIR> Users\n11/04/2014 15:08 <DIR> Windows\n 0 archivos 0 bytes\n 11 dirs 664.620.318.720 bytes libres\n\nC:\\>\nRun Code Online (Sandbox Code Playgroud)\n\n我没有足够的数据来诊断您的问题,但您可以通过从FolderBrowserDialog获取随机路径并将它们传递给调试您的函数来测试您的函数,看看它们中的哪些有效,哪些无效,看看它是否有效是失败的主要调用还是递归之一......
\n| 归档时间: |
|
| 查看次数: |
221 次 |
| 最近记录: |