2017-02-20 6 views
3

참고 : 명확히 말하면 다른 질문에서 대답하는대로 휴지통을 비우지 않습니다. C#으로 하나의 휴지통의 위치를 ​​얻기 위해 내가 발견 한 방법을 모두 스택 오버플로 슈퍼 사용자에 대한 다른 질문에서 답변을 사용어떻게 WPF에서 사용자의 휴지통에있는 모든 파일/디렉토리에 액세스 할 수 있습니까?


은 다음과 같습니다

@"C:\$Recycle.Bin\" + System.Security.Principal.WindowsIdentity.GetCurrent().User.ToString()

그러나, I 다음 코드를 실행하십시오. 내 휴지통에있는 파일과 다른 파일을 얻고 있습니다.

string location = @"C:\$Recycle.Bin\" + System.Security.Principal.WindowsIdentity.GetCurrent().User.ToString(); 
foreach (string file in Directory.GetFiles(location)) 
{ 
    Console.Writeline(file); 
}     

어떻게해야합니까? 내 휴지통에있는 모든 파일을 올바르게 가져 오시겠습니까? 필자의 요구는 파일이 마지막으로 사용 된 시점에 액세스하여 가능한 경우 복원하는 것입니다.

감사합니다.

답변

3

휴지통에 실제 위치가 없기 때문에 처음 생각했던 것처럼 단순하지 않습니다. 가상 폴더입니다. 휴지통에있는 모든 파일의 목록을 가져와이 작업을 수행하려면 % SystemRoot % \ system32 \ shell32.dll에있는 shell32.dll에 대한 참조를 추가해야합니다.

public static void Main(string[] args) 
{ 
    Shell shell = new Shell(); 
    Folder folder = shell.NameSpace(0x000a); 

    foreach (FolderItem2 item in folder.Items()) 
     Console.WriteLine("FileName:{0}", item.Name); 

    Marshal.FinalReleaseComObject(shell); 
    Console.ReadLine(); 
} 

REF : https://stackoverflow.com/a/11660616/

이 또한 휴지통 당신이 있도록 각 HDD 거기에 주 : 당신이 여기 내 대답을 볼 수있는 파일의 LASTMODIFIED 속성을 가져올 수 http://www.dreamincode.net/forums/topic/161500-play-with-recycle-bin-in-code/

모든 드라이브를 확인하십시오. https://stackoverflow.com/a/6025331/495455

+0

와우, 감사합니다 : 여기에 파일을 복원하려면

는 C#의 솔루션입니다. 코드가 완벽하게 작동하고 이제는 파일을 복원하는 방법을 테스트 할 것입니다. 내가 그것을 복원 한 후에 내가 지금 복원 된 위치를 추적 할 수 있다고 가정하고 있습니까? –

+0

예 * 새로운 * 복원 된 파일 경로는'FolderItem' 객체의 속성입니다. 이 파일을 데이터베이스에 저장하거나 삭제되었지만 발견되지 않은 파일을 추적하기 위해 저장할 수 있습니다. 사용자가 휴지통을 비울 때 또는 파일이 존재했다는 증거를 없애기 위해 프로그램을 사용하는 경우 수행 할 계획에 대해 확실하지 않은 목록은 다음과 같습니다. https://www.howtogeek.com/72130/learn- Windows에서 파일을 안전하게 지우는 방법/ –

+0

예에서 파일을 복원하기 위해 * 이전 *에서 파일 위치를 사용하고 있기 때문에 약간 어려움을 겪고 있습니다. 나는 그것의 위치가 휴지통에만 있음 –