2010-03-30 4 views
6

파일 시스템에서 C# 코드로 삭제 한 파일을 알아야합니다. 오직 하나의 아이디어 만 감사 기능을 사용하는 것입니다. 그러나 매우 느린 것 같습니다 ...파일을 삭제 한 사용자를 어떻게 얻을 수 있습니까?

+0

당신이 말하는 "감사"는 무엇입니까? – BlueMonkMN

+1

@BlueMonkMN : 그럴 수 있습니다 : NTFS 액세스 감사 - http://support.microsoft.com/kb/310399; 결국 이것은 가장 간단한 옵션 인 것 같습니다. 어쨌든 이것은 사용자 공간보다 커널에 가깝기 때문에 모든 파일 액세스 이벤트를 잡아야합니다 (저수준 디스크 액세스에 대해서는 확신 할 수 없지만 아마도 여기서는 필요하지 않을 것입니다). 나는 미세 조정에 대한 경험이 없다. – Piskvor

+0

많은 파일을 가지고 실제로 시스템 로그 – user295518

답변

2

FileSystemWatcher.Deleted 이벤트를 사용하여 파일 시스템에서 발생하는 삭제 내용을 캡처 할 수 있습니다.

응용 프로그램에 따라 어떤 시점에서이 이벤트가 발생했는지 알 수 있습니다 (FileSystemEventArgs의 일부가 아닙니다).

+0

에 스팸하므로 감사를 사용하고 싶지 않습니다. 감시자를 사용하고 있지만 다음과 같이 사용자 이름을 얻으려고하면 : System.Security.AccessControl.FileSecurity sec = new FileSecurity (Path, System.Security.AccessControl.AccessControlSections.Owner); return sec.GetOwner (typeof (System.Security.Principal.NTAccount)). 값; 사용자를 확인할 수 없어 예외가 발생합니다. – user295518

+0

@user : WindowsIdentity.GetCurrent(). Name을 사용해보십시오 http://msdn.microsoft.com/en-us/library/system.security.principal.windowsidentity. aspx –

1

필자가이 파일 시스템에서 검색 할 수 있는지는 잘 모르겠지만 av FileSystemWatcher 객체를 사용하여 Deleted에서 이벤트를 트리거하는 방법이 있습니다. 단점은 항상 감시자 응용 프로그램을 실행해야한다는 것입니다. 한 가지 단점은 그것이 가능한 경우 spesific 폴더를 모니터링 할 수 있다는 것입니다.

+0

FileSystemWatcher 파일을 삭제 한 사용자에 대한 정보를 제공하지 않는 것 같습니다 ... – user295518

+0

아니요,하지만 어쩌면 파일을 통해 액세스 할 수 있습니다. 소유자가 아닌 파일을 변경 한 사용자를 확보해야합니다. 하지만 어쨌든 파일은 아마도 이미 삭제되었을 것입니다. 그것이 내가 추측하는 예외를 얻는 이유입니다. –

+0

아마도이 소스 코드에서 삭제 된 파일의 파일 정보에 액세스하는 방법을 알 수 있습니까? http://ntfsundelete.com/downloads/ –

관련 문제