#c_sharp
Есть сетевой .xls-файл. Как можно программно узнать, каким пользователем занят данный файл?
Ответы
Ответ 1
По всей видимости узнать это можно только с машины, на которой находится папка, содержащая файл. На ней должен быть поднят сервис, проверяющий по запросу кто именно занял файл. Другие же клиенты сети для проверки должны посылать запросы на этот сервис. Вот проект на CodeProject, автор которого решил эту проблему.Ответ 2
Попробуйте запосить DirectoryServices using (DirectoryEntry container = new DirectoryEntry("WinNT://servername/LanmanServer") { IADsFileServiceOperations fso= container.NativeObject as IADsFileServiceOperations; if (fso != null) { foreach(IADsSession sess in fso.Sessions()) { Console.WriteLine("Name : {0} \tUser: {1} \tComputer : {2}", sess.Name, sess.User, sess.Computer); } IADsCollection resources = fso.Resources() as IADsCollection; Console.WriteLine("----- Resource info -------"); foreach(IADsResource resource in resources) { try { Console.WriteLine("\tPath: {0}\tUser: {1}\tLockCount: {2}\tName: {3}", resource.Path, resource.User, resource.LockCount, resource.Name); } catch (System.IO.FileNotFoundException ex) { // Watch Non-Fileshare resources like named pipes, these are not stored in the ADSI cache } } } }
Комментариев нет:
Отправить комментарий