2010-04-13 3 views
0

나는 선호하는 C 프로그램을 작성하여 주어진 디렉토리를 볼 것입니다. 프로세스가 그 디렉토리에 접근 할 때마다, 나는 단지 그 프로세스의 이름을 출력하고 싶다. 간단 해 보이지만 MSDN의 솔루션에 대해서는 간략하게 설명하고 있습니다. 누구든지 내가 필요로하는 라이브러리 호출이나 도움이되는 조언을 알고 있습니까? 내가 반복적으로 어떤 프로세스가 주어진 디렉토리에 처리하고 그 목록에 추가를보고 쿼리를 반복적으로 고려했습니다.이 접근법은 매우 집중적 인 것 같아요, 나는 쉬운 방법이 있기를 바라고 있습니다. 감사.폴더에 액세스하는 프로세스를 표시합니다.

+0

이렇게하려면 코드를 작성해야합니까, 아니면 기존 도구를 기꺼이 사용할 수 있습니까? (즉,이 기능을 일부 기존/새 프로그램에 추가하려고합니까, 아니면 이것을 수행하는 방법을 찾기 위해 연습하고 있습니까?) – reuben

+0

궁극적으로 더 큰 프로젝트의 일부가 될 것이지만 이 기능을 구현하지 못할 수도 있습니다 ... – Bsaltafo

답변

1

사용자 모드에서이 작업을 수행 할 수있는 지원 방법이 없습니다. FindFirstChangeNotification API를 사용하여 파일이나 디렉토리가 변경된시기를 알 수 있지만 누가 그 일을했는지 ​​알려주지는 않습니다. 이 정보를 얻기 위해 몇 가지 방법을 사용할 수는 있지만 지원되지는 않습니다.

드라이버를 사용할 수있는 경우이 정보에 Event Tracing for Windows을 사용할 수 있습니다. Sysinternals ProcMon이 사용하는 것입니다. 그러나 드라이버를 설치하는 것은 매우 복잡한 과정이며 드라이버의 버그로 인해 BSOD가 발생하고 드라이버를 설치하려면 관리자 권한이 필요합니다. 명심해야 할 것이 있습니다.

+0

내가 훅 할 필요가있는 것에 대한 자세한 정보를 제공해 주시겠습니까? – Bsaltafo

+0

예, 또한 FindFirstChangeNotification 및 [ ReadDirectoryChangesW] (http://msdn.microsoft.com/en-us/library/aa365465%28VS.85%29.aspx)는 WinXP에 대한 최대 1 일간의 액세스 이벤트보고를 지연시킵니다. , Vista +에서 최대 1 시간 동안 성능을 유지합니다. – clyfe

관련 문제