我試圖通過我的應用程序中的SpecialFolder(Environment.SpecialFolder.StartMenu和Environment.SpecialFolder.DesktopDirectory)進行遞歸,並且它適用於英語安裝。在非英語操作系統上通過SpecialFolder目錄遞歸異常
但是我有在非英語安裝了以下問題:
當我使用非定域路徑我得到UnauthorizedAccessException因爲我嘗試訪問
如果所有子文件夾我本地化Environment.GetFolderPath的結果並嘗試獲取子目錄的列表,我在本地化路徑上獲得DirectoryNotFoundException。局部路徑的一個例子:
原始 - >C:\用戶\託尼\應用程序數據\漫遊\微軟\的Windows \開始菜單
本地化 - >C: \ Utilsateurs \ tony \ AppData \ Roaming \ Microsoft \ Windows \ MenuDémarrer
我使用Environment.GetFolderPath來獲取目錄,然後使用fo搜索特定文件的位置llowing方法:
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返回目錄路徑遞歸的方法。
它可能是您的程序需要管理員權限? – TaW
@TaW我也嘗試以管理員身份運行程序,但仍然出現錯誤。 – dmck
@dmck即使在以admin身份運行時,您也會得到UnauthorizedAccessException異常?如果是這樣,那就是......很奇怪。至於GetFolderPath的本地化結果...您是在法語版本的操作系統上運行,還是隻在法語本地化的應用程序上運行英文版的操作系統? – joce