2014-03-31 3 views
0

다른 응용 프로그램의 메뉴를 관리하는 데 도움이되는이 작은 도구가 있습니다. 다른 파일처럼 바로 가기 파일을 복사하려면이 도구가 필요합니다. 불행히도 모든 파일을 복사하지만 확장자는 .lnk 인 파일입니다. 아무도 이유를 아나요? 나는 이것에 관해 무엇인가 발견 할 수 없다. 나는 처음부터 바로 가기를 만들지 않고, 기존의 것을 바로 복사하고있다. FileInfo.CopyTo() 및 File.Copy() 메서드를 시도했습니다. 실제로 파일을 복사 한 다음 실제로 이상한 예외를 throw합니다. try..catch ... (catch에 아무것도 포함하지 않음)로 감싸는 경우 일부는 단축키 아이콘을 잃어 버리는 예외가있는 것으로 보입니다. 아니 그것은 여기에 많은 도움이되지만 수 있음을 내 코드의 요지는 다음과 같습니다바탕 화면에 바로 가기 복사

DirectoryInfo destinationDirectory= new DirectoryInfo(Environment.GetFolderPath(Environment.SpecialFolder.Desktop));  
string temppath = Path.Combine(destinationDirectory.FullName, sourceFile.Name); 
sourceFile.CopyTo(temppath.FullName, true); 

답변 :

가 올바른 방향으로 pointint 나를 위해 당신에게 알리레자 감사드립니다.

DirectoryInfo destinationDirectory = new DirectoryInfo(Environment.GetFolderPath(Environment.SpecialFolder.Desktop)); 
FileInfo shortcut = sourceFile.Directory.GetFiles("*.lnk").FirstOrDefault(f => f.Name == sourceFile.Name) as FileInfo; 
if (shortcut != null) 
{ 
    File.Copy(shortcut.FullName, Path.Combine(destinationDirectory.FullName, shortcut.Name), true); 
} 
+1

이 시도하고 결과를보고 : var에 바로 가기 = 새의 DirectoryInfo (Environment.GetFolderPath (Environment.SpecialFolder.Desktop)) GetFiles에. 여기에 내가하고 결국 무엇 ("* .lnk"); – Alireza

+0

두 항목 (내 바탕 화면에 두 개의 바로 가기)이있는 FileInfo []가 반환됩니다. 각각은 lnk 확장자를 갖습니다. – bjhuffine

답변

1

이 작동합니다 :

var shortcuts = new DirectoryInfo(Environment.GetFolderPath(Environment.SpecialFolder.Desktop)) 
       .GetF‌​iles("*.lnk"); 
string destFolder = destinationDirectory.FullName; 
foreach(var f in shortcuts) 
    File.Copy(f.FullName, Path.Combine(destFolder,f.Name)); 
+0

글쎄, 그 바탕 화면에서 다른 폴더로 이동하지만, 마스터 폴더에서 데스크톱에 나는 액세스가 거부 된 예외가 가려고 노력하고 있습니다. 아마 내가 언급 했어야 했어. 나는이 예외를 얻는다, 그러나 나는 아직도 그것을 말한다. 그것은 내 방법에 의문을 갖게하는 매우 이상합니다. – bjhuffine

+0

좋아, 나는 네가하고 싶은 말의 변종을 만들어서 일하게했다. 나는 아직도 이유를 모른다. 단순히 파일과 관련된 경로를 가져 가서 거기에서 이동할 수없는 것 같습니다. 분명히 파일을 읽어야합니까? 이것은 파일 속성과 관련이 있습니까? 내 질문에 내 결과를 추가하여 다른 사람들에게 명확하게 전달할 것입니다. – bjhuffine

관련 문제