현재 로그인 한 사용자의 즐겨 찾기를 가져 오는 일부 C# 코드가 있습니다. 이 코드는 Windows 탐색기 프로세스로로드되는 작업 표시 줄 도구 모음의 일부입니다. 로밍 프로필 또는 폴더 리디렉션 설정이 있고 활성화 된 도메인에서 UAC를 사용하는 Windows Vista를 사용하는 사용자가 있습니다. 즐겨 찾기 경로에서 Directory.GetDirectories를 호출하면 "System.IO.DirectoryNotFoundException : 'C : \ Users \\ Favorites \"경로의 일부를 찾을 수 없습니다. 로밍 프로필 또는 폴더 리디렉션 설정이없는 다른 도메인의 다른 사용자에게는이 문제가 없습니다.DomainNotFoundException 도메인 폴더 리디렉션으로 인해 Environment.SpecialFolder.Favorites에서 Directory.GetDirectories를 호출 할 때
사용자는 실패한 로그에서 실행 프롬프트로 경로를 복사해도 경로를로드하지 못하지만 탐색기를 사용하여 직접 경로를 탐색 한 다음 해당 경로를 복사하여 실행 프롬프트에 붙여 넣으면 작동하는 것으로보고되었습니다 . 그는 나에게 두 가지 경로를 모두 보냈는데 정확히 일치하지 않으므로 전혀 이해가되지 않습니다.
내 이론은이 경로가 실제로 서버의 공유를 가리키고 있지만 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);
}
}
감사합니다,
존