Определите, у кого есть файл, открытый с помощью C # - PullRequest
14 голосов
/ 04 мая 2011

Используя C #, как я могу получить информацию о том, у кого открыт файл?Было бы достаточно имени пользователя и компьютера.

В случае, если это имеет значение, у меня есть рабочие станции Windows, которые получают доступ к файлам на файловом сервере Linux через Samba.Мне нужна эта информация в программе, работающей на рабочих станциях.

Ответы [ 2 ]

4 голосов
/ 04 мая 2011

Основные библиотеки .NET не имеют никаких средств для этого.

И если я вас правильно понимаю, вы хотите узнать с рабочей станции Windows A, у кого есть файлы, открытые на общем файловом ресурсе Linux, и некоторые из этих пользователей с открытым файлом могут происходить из других окон Windows, если этоВ этом случае вам потребуется служба на стороне Linux, которую вы можете запросить, чтобы предоставить ее обратно на рабочую станцию ​​Windows.

На локальной машине это может быть достигнуто, но, по крайней мере, вам потребуетсявзаимодействовать с API-интерфейсами ОС, такими как NtQueryInformationFile и NtQueryObject (оба официально не задокументированы) и другие.Такие инструменты, как монитор процессов, динамически устанавливают драйвер устройства для достижения уровня проверки, который они выполняют, и он будет сообщать вам только о том, какие локальные дескрипторы файлов открыты для какого пользователя.

1 голос
/ 04 мая 2011

Я не думаю, что вы можете сделать это с помощью .NET

В прошлом, когда я сталкивался с этой проблемой, я всегда заканчивал тем, что использовал монитор процесса или проводник процесса .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...