2011-08-18 5 views
0

C#을 사용하여 공유 폴더의 파일을 수정하는 데 사용되는 사용자 계정을 확인하려고합니다.C#을 사용하여 공유 폴더에서 파일을 수정 한 계정 확인 방법

프로그램이 공유 폴더가있는 컴퓨터에서 실행되면 정상입니다.

+0

- 감사 정책 만 수행 할 수 있다고 생각합니다. 그리고 이후에 누가 액세스 파일에 대한 이벤트를 읽을 수 있습니다. –

답변

0

FileSystemWatcher을 포함하는 Windows Service을 만들어야합니다. 여기에서 당신은 OnChanged 이벤트

watcher.Changed += new FileSystemEventHandler(OnChanged); 

private static void OnChanged(object source, FileSystemEventArgs e) 
{ 
    // Specify what is done when a file is changed, created, or deleted. 
    Console.WriteLine("File: " + e.FullPath + " " + e.ChangeType); 
} 

FileSystemWatcher

파일 시스템 변경 알림 수신 및 이벤트를 제기를 제기 한 파일을 수정하는 사용자를 확인 할 수 있습니다 때 디렉토리, 또는 디렉토리에 파일이 있으면 변경됩니다.

+2

좋은 생각이지만,'FileSystemEventArgs'는 사용자가 누구인지 알려주지 않습니다. Windows OS는 파일을 마지막으로 수정 한 사용자를 추적하지 않습니다. 내가 생각할 수있는 OS도 없다. (리눅스, 맥 ...) – mattypiper

+0

downvote? 정말? 이 대답은 정말로 그렇게 나쁜 것입니까? – hunter

+0

@ 헌터 : ttymatty가 말했듯이,'FileSystemWatcher'는 파일이 변경되었다는 것을 알려주지 만 변경 한 사람은 알려주지 않습니다. 파일이 변경되었음을 알면 사용자를 판별하는 방법을 알 수 없습니다. 그것이 가능하다는 것이 분명하지 않기 때문에 이것은 중요합니다. – Gabe

0

파일 수정 계정을 결정하기 위해 내가 생각할 수있는 두 가지 옵션이 있습니다

  1. 가 감사 : 당신이 (로컬 보안 정책을 통해) 감사를 사용하는 경우, 당신은 감사 할 공유 폴더를 설정할 수는 성공적인 쓰기 액세스. 이렇게하면 사용자가 실제로 쓰기를 수행 한 사용자가 아닌 쓰기 액세스를 위해 파일을 열 었는지 알 수 있습니다. 그런 다음 모든 컴퓨터에서 공유 폴더가있는 컴퓨터의 보안 로그를 모니터링하고 해당 파일에 대한 사용자의 쓰기 권한을 확인할 수 있습니다.

  2. 프로세스 모니터링 : 공유 폴더가있는 컴퓨터에서 ProcMon을 실행하고 해당 로그를 파일에 기록 할 수 있습니다. 그런 다음 정기적으로 로그에서 파일에 대한 실제 기록을 확인할 수 있습니다. 이것은 어떤 프로세스가 쓰기를 수행했는지, 그리고 그 프로세스가 실행중인 사용자를 알려주지 만, 그 프로세스가 당시에 가장 한 사용자 일 필요는 없습니다.

  3. 조합 : 실제 기록을 수행 한 사용자를 확인하려면 감사 로그와 프로세스 모니터링 로그를 결합하여 쓰기 스레드가 기록시 가장 한 사용자를 확인해야 할 수 있습니다.