Определение того, кто обращается к файлу в общей папке в Windows 2008 R2 server / Windows 7

#c# #c #c #wmi #share

#c# #c #c #wmi #Поделиться

Вопрос:

Мне нужно найти способ определить, к каким файлам в общей папке осуществляется доступ и кем. Такие команды, как «Сетевые файлы» и «Сетевой сеанс», могут предоставить эту информацию, а также PSFile.exe в SysInternals, но я не могу понять, как это сделать программно. Я нашел способ определить, кто обращается к общему ресурсу через WMI, но он не показывает, к какому файлу осуществляется доступ. Кто-нибудь знает, как это сделать на C / C / C #? Любая помощь будет высоко оценена.

Ответ №1:

Вы можете использовать ADSI (интерфейсы службы Active Directory), некоторое время назад я написал статью на эту тему Using Delphi and ADSI to enumerate local and remote shared resources примеры написаны на delphi, но вы можете использовать эту статью в качестве руководства по ADSI.

Чтобы перечислить открытые ресурсы, такие как папки и файлы, вы должны использовать интерфейс IADsFileServiceOperations и функцию Resources, которые возвращают коллекцию открытых ресурсов для службы.

Ответ №2:

Похоже, что вы ищете NetFileEnum уровня 3.