none
파일 변경을 탐지하고, 어떤 프로세스가 파일을 변경했는지 알 수 있나요? RRS feed

  • 질문

  • 안녕하세요. MFC 초보 개발자입니다.

    https://technet.microsoft.com/en-us/sysinternals/bb896645 프로세스모니터 처럼 어떤 프로세스가 어떻게 파일을 변경했는지 나타내는 프로그램을 작성하고 싶습니다.

    현재 ReadDirectoryChangesW메소드를 이용하여 지정한 경로 내에서 파일을 변경을 탐지하는 솔루션을 제작하고 있습니다.

    파일 변경 탐지는 제대로 되지만, 어떤 프로세스가 파일을 변경했는지 알고 싶습니다.

    예를 들어 사용자가 파일탐색기를 통하여 A.txt라는 파일을 B.txt로 바꿀 경우, explorer.exe[PID Number]에서 파일 이름을 변경했다고 나타날 수 있도록...

    구글링을 한 결과 VB에서 이렇게 구현이 가능하다고는 하는데 제가 VB를 다뤄보지 않아서 자세하게 어떤 원리로 동작하는지는 잘 모르겠습니다.

    https://social.msdn.microsoft.com/Forums/en-US/8480c17c-c2ec-4f0f-9da5-40f739acb84e/filesystemwatcher-get-process-name?forum=Vsexpressvb

    이 질문글에서는 FileSystemWatcher라는 클래스를 사용하는 듯 하네요.

    또한 다른 방법으로는 파일 필터 드라이버를 직접 제작하라고는 하는데, 그 부분에 대해서 해답이 있다면 자세한 설명 부탁드립니다.

    감사합니다.


    • 편집됨 LaLa5Bok 2016년 5월 9일 월요일 오전 7:11
    2016년 5월 9일 월요일 오전 7:10

답변

  • VB에서도 안 됩니다. (그 글을 자세하게 보시면 안된다고 나옵니다.) 사실 FileSystemWatcher가 내부적으로는 ReadDirectoryChangesW를 이용해 구현한 것입니다.

    원하시는 구현은 파일 필터 드라이버를 제작해야 할 것입니다. 관련해서는 DDK 분야라서 SDK 개발자가 직접 접근하기에는 쉽진 않을 것입니다. 저도 그 이상은 답변이 어렵고, 관련해서는 디바이스 드라이버쪽 포럼에 문의하시는 것이 좋습니다.

    • 답변으로 표시됨 LaLa5Bok 2016년 5월 10일 화요일 오전 2:25
    2016년 5월 9일 월요일 오전 8:25