Как посмотреть кто открыл файл excel по сети

Имеется шара в сети с excel файлом. Когда в нем кто то работает у другого пользователя появляется диалоговое окном «Файл занят и ФИО пользователя». Но временами просто выводит что «файл занят другим пользователем»
Как можно включить что бы постоянно отображалось ФИО работающего с файлом?
Все действие в доменной среде. Доступ к папке имеет 12 пользователей на чтение и запись.


  • Вопрос задан

    более трёх лет назад

  • 10943 просмотра

Возможно, ФИО показывает у тех, кто заполнил это поле в параметрах.
Заставьте всех пользователей внести ФИО в параметрах и будете знать каждого занимающего файл.

Пригласить эксперта

На сервере с вашей шарой запускаешь compmgmt.msc > Общие папки > Открытые файлы и смотришь кто работает с файлом. Также можно воспользоваться консольной утилиты Openfiles


  • Показать ещё
    Загружается…

15 апр. 2023, в 23:37

1000 руб./в час

15 апр. 2023, в 23:24

25000 руб./за проект

15 апр. 2023, в 21:40

2000 руб./за проект

Минуточку внимания

Как выяснить, открыт ли кем-нибудь файл с общим доступом?

Aleksio

Дата: Вторник, 26.07.2016, 23:22 |
Сообщение № 1

Группа: Пользователи

Ранг: Новичок

Сообщений: 22


Репутация:

1

±

Замечаний:
0% ±


Excel 2010

Есть файл с общим доступом. Файл находится на общем сетевом жёстком диске. С этим файлом постоянно работают много человек.
1. Необходимо выяснить, открыт ли у в настоящее время у кого-нибудь из сотрудников данный файл.
2. Желательно выяснить, у кого именно открыт.

В случае, если файл не с общим доступом, то всё просто — он выводит табличку, что файл открыт конкретным пользователем. А вот если включён общий доступ — то ничего не сообщает. Более того, файл спокойно поддаётся переименованию, а также перемещению в другую папку, и сообщение о том, что файл занят каким-то процессом — не выводится. Через журнал изменений можно лишь выяснить, кем и когда файл был открыт (если при этом пользователь сохранял файл) и кем и когда было сделано последнее изменение. При этом кем сейчас он используется — не ясно.

Нужно это знать для того, чтобы внести изменения, которые невозможны при включённом общем доступе, и вот для этого нужно его отключить, но лишь в тот момент, когда файл никем не используется (ибо пользователи не смогут сохранить их изменения, если им отрубить общий доступ).

P.s. Доступа к администрированию сетевого ресурса (управление компьютером) нет.

Сообщение отредактировал AleksioВторник, 26.07.2016, 23:25

 

Ответить

Karataev

Дата: Среда, 27.07.2016, 10:03 |
Сообщение № 2

Группа: Проверенные

Ранг: Старожил

Сообщений: 1330


Репутация:

528

±

Замечаний:
0% ±


Excel

Вкладка «Рецензирование» — Доступ к книге — вкладка «Правка» — в области «Файл открыт следующими пользователями» список пользователей, которые открыли общий файл.
PS. В списке пользователей отображаются только те пользователи, у которых файл открыт в режиме чтения и записи. Если у пользователя ограничены права и он может открыть только в режиме чтения, то такой пользователь не отображается в этом списке.


Киви-кошелек: 9166309108

 

Ответить

Manyasha

Дата: Среда, 27.07.2016, 10:13 |
Сообщение № 3

Группа: Модераторы

Ранг: Старожил

Сообщений: 2198


Репутация:

898

±

Замечаний:
0% ±


Excel 2010, 2016

вариант макросом:
[vba]

Код

Sub CheckUserStatus()
    Dim users, msg$, i%
    users = ThisWorkbook .UserStatus
    For i = 1 To UBound(users, 1)
        msg = msg & vbCrLf & users(i, 1)
        If users(i, 3) = 1 Then
            msg = msg & » — Exclusive»
        Else
            msg = msg & » — Shared»
        End If
    Next
    MsgBox msg
End Sub

[/vba]


ЯД: 410013299366744 WM: R193491431804

 

Ответить

Aleksio

Дата: Среда, 27.07.2016, 22:39 |
Сообщение № 4

Группа: Пользователи

Ранг: Новичок

Сообщений: 22


Репутация:

1

±

Замечаний:
0% ±


Excel 2010

Вкладка «Рецензирование» — Доступ к книге — вкладка «Правка» — в области «Файл открыт следующими пользователями» список пользователей, которые открыли общий файл.
PS. В списке пользователей отображаются только те пользователи, у которых файл открыт в режиме чтения и записи. Если у пользователя ограничены права и он может открыть только в режиме чтения, то такой пользователь не отображается в этом списке.

Я в курсе, про это я и говорил. Да, там написано, что «Файл открыт следующими пользователями», но на деле это не так. Файл уже давно закрыт и сохранён пользователем, а в списке он остаётся. Там просто фиксируется когда данный пользователь входил в последний раз.
И наоборот, пользователь в файл вошёл, редактирует, но ещё его не сохранял — в списке пользователя нет.

А за макрос спасибо, на днях испытаю чисто из интереса, но в данном моём случае вариант с макросом не подходит, ибо файл и так очень большой, периодически случаются конфликты с одновременным сохранением/входом + подвисает при вычислении. Макрос ещё больше его нагрузит. Да и остальным пользователям эта табличка являться не должна, только мне. Разве что как-то сослаться из другого файла с использованием макроса на необходимый файл… но как?

 

Ответить

Karataev

Дата: Четверг, 28.07.2016, 09:25 |
Сообщение № 5

Группа: Проверенные

Ранг: Старожил

Сообщений: 1330


Репутация:

528

±

Замечаний:
0% ±


Excel

Я в курсе, про это я и говорил.

В первом посте нет ни слова про область «Файл открыт следующими пользователями». Может Вы где-то в другом месте смотрите, а не там, где я написал в посте 2.

Да, там написано, что «Файл открыт следующими пользователями», но на деле это не так. Файл уже давно закрыт и сохранён пользователем, а в списке он остаётся. Там просто фиксируется когда данный пользователь входил в последний раз.
И наоборот, пользователь в файл вошёл, редактирует, но ещё его не сохранял — в списке пользователя нет.

У меня другое поведение общего доступа: пользователь открыл файл — пользователь появился в области «Файл открыт следующими пользователями». Пользователь закрыл файл — пользователь удалился из этой области. Почему-то у нас с Вами разное поведение с общим доступом. Я тестировал в «Excel 2016».


Киви-кошелек: 9166309108

Сообщение отредактировал KarataevЧетверг, 28.07.2016, 09:50

 

Ответить

Manyasha

Дата: Четверг, 28.07.2016, 10:27 |
Сообщение № 6

Группа: Модераторы

Ранг: Старожил

Сообщений: 2198


Репутация:

898

±

Замечаний:
0% ±


Excel 2010, 2016

Олег, у меня тоже иногда бывает такое, что

Файл уже давно закрыт и сохранён пользователем, а в списке он остаётся

А иногда еще пользователи и дублируются, т.е. в списке пользователей один человек записан 2 и более раз. Не знаю с чем это может быть связано %)

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

Мне снимать общий доступ требуется очень редко, в основном тогда, когда я хочу обновить/добавить какой-нибудь макрос. На этот случай, я веду логи: записываю в текстовый файлик кто и когда открыл/сохранил/закрыл файл.

Aleksio, макрос вернет такой же результат, как и при просмотре списка пользователей вручную.


ЯД: 410013299366744 WM: R193491431804

 

Ответить

Karataev

Дата: Четверг, 28.07.2016, 11:28 |
Сообщение № 7

Группа: Проверенные

Ранг: Старожил

Сообщений: 1330


Репутация:

528

±

Замечаний:
0% ±


Excel

Manyasha, но до конца все равно не понятна ситуация, т.к. в посте 1 автор не упоминает про «Файл открыт следующими пользователями», а пишет про «журнал изменений». Я пока не смотрел, что это за журнал.


Киви-кошелек: 9166309108

 

Ответить

Aleksio

Дата: Среда, 03.08.2016, 23:53 |
Сообщение № 8

Группа: Пользователи

Ранг: Новичок

Сообщений: 22


Репутация:

1

±

Замечаний:
0% ±


Excel 2010

Испытал макрос. Работает. Показывает, что такой-то пользователь работает в файле. А вот в «Файл открыт следующими пользователями» при этом пользователь не отображается. Excel 2007.
Правда испытал лишь с несколькими пользователями, но пока работает. Спасибо.

А возможно ли создать макрос в новом файле, чтобы он ссылался на интересуемый файл с общим доступом, и проверял, кто сейчас находится в том файле? (чтобы макрос не встраивать в файл с общим доступом)

 

Ответить

Karataev

Дата: Четверг, 04.08.2016, 09:01 |
Сообщение № 9

Группа: Проверенные

Ранг: Старожил

Сообщений: 1330


Репутация:

528

±

Замечаний:
0% ±


Excel

Насколько я понимаю, свойство «UserStatus» — это «Файл открыт следующими пользователями». Даже информация возвращается та же, что и в «Файл открыт следующими пользователями». Но видимо в данном случае VBA и Excel работают по-разному.


Киви-кошелек: 9166309108

 

Ответить

Manyasha

Дата: Четверг, 04.08.2016, 10:27 |
Сообщение № 10

Группа: Модераторы

Ранг: Старожил

Сообщений: 2198


Репутация:

898

±

Замечаний:
0% ±


Excel 2010, 2016

макрос в новом файле, чтобы он ссылался на интересуемый файл с общим доступом

в макросе замените ThisWorkbook на ActiveWorkbook, макрос будет проверять активную книгу.


ЯД: 410013299366744 WM: R193491431804

 

Ответить

На общедоступном сетевом ресурсе могут возникать ошибки доступа к файлам. Причиной этому является некорректно завершенная сессия пользователя, ошибки в работе ПО или просто кто-то открыл файл и не закрывает его. В такой ситуации файл оказывается заблокированным и не доступен для работы другим пользователям.

Решить проблему доступа к файлу можно путем закрытия сеансов использующих этот файл. В этой статье я расскажу как определить кто открыл файл в сетевой папке и как закрыть это подключение.

Рассмотрим два способа:

  1. Через оснастку «Управление компьютером» консоли управления Windows;
  2. При помощи утилиты командной строки — Openfiles.

1 способ. Получаем список открытых файлов с помощью оснастки «Управление компьютером».

Для получения списка открытых файлов на файловом сервере воспользуемся оснасткой консоли «Управление компьютером». Для запуска оснастки нажимаем сочетание клавиш «Win + R» и набираем название оснастки «compmgmt.msc».

В иерархии оснастки переходим /Управление компьютером/Служебные программы/Общие папки/Открытые файлы.

В правой части оснастки появится список открытых файлов. Здесь можно увидеть имя пользователя открывшего файл, количество блокировок и режим доступа к файлу.

Закрываем файл. Чтобы закрыть сетевой файл открытый другим пользователем находим его в списке и в контекстном меню выбираем пункт «Закрыть открытый файл».

2 способ. Просмотр открытых файлов через командную строку утилитой Openfiles.

Утилита Openfiles дает нам более широкие возможности по поиску и закрытию заблокированных файлов.

C помощью openfiles можно просмотреть список открытых файлов на сервере удаленно. Для этого открываем командную и запускаем утилиту с параметрами.

Openfiles /Query /s FileServer

где
/Query — показывает все открытые файлы,
/s — определяет имя удаленного компьютера.

В случае, когда необходимо указать логин и пароль пользователя для подключения к удаленному компьютеру, задаются параметры: /u — логин пользователя, /p — пароль пользователя.

openfiles /query /s FileServer /u domainadmin /p p@ssw1234

По-умолчанию список файлов показан в формате таблицы, но есть параметры позволяющие изменить формат вывода:

Openfiles /Query /s FileServer /fo csv 

/fo csv — выводит список в формате csv с разделителем запятая;
/fo list — показывает открытые файлы в формате списка;
/fo table — формат таблицы.

Если необходимо увидеть информацию о количестве блокировок файлов (#Locks) и в каком режиме открыт файл (чтение или запись), то можно воспользоваться параметром /v.

Openfiles /Query /s FileServer /v

Определяем кто открыл сетевой файл.

Чтобы найти пользователя, который открыл и заблокировал нужный нам файл запускаем Openfiles с командой find.

Openfiles /Query /s FileServer | find /i "anyfile.xlsx"

в команде find указан параметр /i, чтобы поиск был регистронезависимым.

После того когда мы узнали имя пользо

Закрываем заблокированный сетевой файл.

Закрыть открытый файл можно по id сессии таким способом:

openfiles /disconnect /id 26843578

Закрыть все сетевые подключения к файлам и папкам, которые открыл пользователь BadUser:

openfiles /disconnect /a BadUser

Закрыть все файлы и директории открытые в режиме чтение/запись:

openfiles /disconnect /o read/write

Закрыть все подключения к директории с именем «c:myshare»:

openfiles /disconnect /a * /op "c:myshare"

Чтобы сбросить все сессии на удаленном сервере FileServer, которые открыл пользователь domainbaduser, независимо от id сессии:

openfiles /disconnect /s FileServer /u domainbaduser /id *

Как просмотреть, кто пользуется общими ресурсами компьютера (шары)

Как просмотреть, кто пользуется общими ресурсами компьютера (шары)

Периодически возникает срочная необходимость узнать, кто и зачем открыл тот или иной файл на компьютере с общим доступом. Это легко осуществить, воспользовавшись консолью «Управление компьютером».

Открываем Консоль управления компьютером

Находим значок «Мой компьютер» (как в меню Пуск, так и на рабочем столе), и нажимаем на нем правой кнопкой мыши. В появившемся меню нажимаем «Управление».

В открывшейся консоли, а точнее в её левой части, ищем пункт «Общие папки», и нажимаем на него.

Так же в эту консоль можно попасть выполнив следующую команду, или создав ярлык:

Просмотр пользователей шары

Теперь перед нами появляются три пункта:

Как узнать кто открыл файл по сети

В Поисках Истины

Сообщения: 802
Благодарности: 135

Конфигурация компьютера
Процессор: Intel Core 2 Duo E6400 2.13GHz
Материнская плата: EliteGroup P965T-A
Память: Kingston orig PC5300 3Gb (1x2Gb,1x1Gb)
HDD: Seagate Barracuda ST3250823A 250Gb + Seagate Barracuda ST3250620AS 250Gb
Видеокарта: Asus EN GeForce 7600GT 256Mb
Звук: C-Media CMI8738
Блок питания: Powerman (In Win) 430W
CD/DVD: Nec DVD-RW ND-4571A
Монитор: Samsung SyncMaster 2443nw 24`
Ноутбук/нетбук: Asus N61DA
ОС: Windows 8 x64

Сообщения: 26042
Благодарности: 4368

Как можно узнать хоть какую — нибудь информацию об «открывшем» файл?

На компьютере, где шара: Пуск -> Выплнить -> fsmgmt.msc

Или сделать это на любом компьютере, а потом пункт меню Действие -> Подключиться к другому.

——-
— Пал Андреич, Вы шпион?
— Видишь ли, Юра.

Сообщение оказалось полезным? Поблагодарите автора, нажав ссылку Полезное сообщение чуть ниже.

Как посмотреть, кто и чем занимался на компьютере в мое отсутствие: определяем последние действия «чужака».

chto-delali-za-pk

Вопрос от пользователя

Здравствуйте!

Работаю в небольшом офисе, недавно появилось подозрение что за моим ПК копается кто-то еще (у нас у всех свои ПК, поэтому моя система по работе точно никому не должна быть нужна!).

Не подскажите, можно ли как-то посмотреть, кто и чем занимался на компьютере в мое отсутствие? И, если можно, как-нибудь бы защитить ПК от таких не званных гостей.

Ваш вопрос прямо напомнил мне одно просторечие: «Если вам кажется, что за вами следят — это вовсе не значит, что у вас паранойя» .

Вообще, для 100%-надежной защиты вашего ПК — он должен быть всегда при вас (тогда никто не сможет отформатировать диск, и посмотреть ваши данные).

Но обычно в офисных условиях достаточно установить пароль на Windows, а документы (которые никто не должен увидеть) — можно зашифровать (либо носить с собой на флешке). 👌

Собственно, теперь об основном вашем вопросе: где и какую историю хранит Windows и как это посмотреть.

Не мешай! Всё уже и так записано на диске. (Евгений Кран, сайт: http://cartoon.kulichki.com/)

Не мешай! Всё уже и так записано на диске. (Евгений Кран, сайт: http://cartoon.kulichki.com/)

ускорение ПК

Как посмотреть последние действия: история работы

👉 Совет 1: анализируем журнал событий

В Windows есть спец. журналы, куда заноситься очень многое: когда включался и выключался компьютер, коды шибок, предупреждения и т.д. Нас же, разумеется, интересует время вкл./выкл. 😉

Чтобы открыть журнал : нажмите Win+R —> откроется окно «Выполнить» —> в него введите команду eventvwr.

После должно появиться окно событий — в нем нужно выбрать вкладку «Журналы Windows / Система» и открыть фильтр текущего журнала. Далее выбрать дату, установить галочку «Сведения» и нажать OK (см. мой пример ниже 👇).

Смотрим историю вкл. ПК за последние сутки

Смотрим историю вкл. ПК за последние сутки

Теперь внимательно смотрим список событий: если вы их отфильтровали — список не будет большим. В первую очередь нас интересуют события «Power. « — в моем примере ниже (👇) показано, что кто-то вывел мой ПК в 7:59 по Москве.

Могли ли вы в это время использовать компьютер

Могли ли вы в это время использовать компьютер

Собственно, время, когда работал ПК мы уже знаем.

👉 Совет 2: смотрим документы и файлы, с которыми недавно работали

По умолчанию Windows помнит обо всех документах и файлах, которые вы недавно открывали (это делается с целью ускорения открытия файлов, с которыми часто работаете).

Чтобы посмотреть этот список (недавних документов*) — нажмите Win+R, и используйте команду shell:recent.

shell:recent - недавние документы

shell:recent — недавние документы

Далее у вас откроется системный каталог, в котором вы сможете отсортировать по дате изменения все файлы — ну и сравнить, с вашими рабочими часами за ПК (а заодно и узнаете, какими документами интересовались «гости» 😉).

Недавние документы отсортированные по дате

Недавние документы отсортированные по дате

Кстати, обратите внимание, что Word и Excel тоже при запуске показывают документы, которые недавно были открыты (если у вас хорошая память и внимательность — возможно вы заметите и те документы, которые сами не открывали 👇).

Word - последнее!

Ну и не могу не отметить, что если вы откроете свойства файла — то во вкладке «Подробно» проводник вам сможет подсказать даты доступа, печати и изменения документа.

Свойства документа

👉 В помощь!

Как посмотреть недавно открытые файлы в ОС Windows 10 (никак не могу найти вчерашний документ. )

👉 Совет 3: анализируем историю посещений в браузере

Одна из самых популярных программ для работы в сети интернет, разумеется, браузер . И вполне вероятно, что если кто-то сидел за вашим ПК/ноутбуком — ему (вероятно) мог он понадобиться.

Чтобы открыть историю посещений (журнал посещений) — в большинстве браузеров достаточно нажать сочетание кнопок Ctrl+H (работает в Chrome, Firefox, Opera. ).

Кстати, в Chrome можно также перейти на страничку: chrome://history/

Ctrl+H — открыть историю

Ctrl+H — открыть историю

После, в журнале указываете нужную дату и уточняете какие сайты просматривались. 👌 (Кстати, многие пользуются соц. сетями — а значит можно будет быстро узнать кто заходил на свой профиль!).

👉 В помощь!

1) Как посмотреть историю посещения сайтов, даже если она удалена

2) Как очистить историю посещения сайтов, чтобы нельзя было восстановить! Удаление всего кэша браузеров

👉 Совет 4: проверяем свой профиль Google

Кстати, если незваный «гость» на ПК пользовался сервисами Google — то вероятно вы сможете узнать, например, что он искал в поисковой системе (еще один «плюсик» к пакету информации 😉). Благо, что по умолчанию Google всю эту информацию собирает и «откладывает».

Как это проверить : зайти на главную страничку Google, кликнуть по значку своего профиля и выбрать «Управление аккаунтом Google» .

Профиль Google (браузер Chrome)

Профиль Google (браузер Chrome)

После перейти во вкладку «Данные и персонализация / история приложений и веб-поиска» .

Далее «проматываете» до нужной даты и смотрите, какие поисковые запросы были сделаны. 👌

Данные и персонализация - история поиска

Данные и персонализация — история поиска

👉 Совет 5: просматриваем корзину, каталог загрузок

Многие пользователи (чаще всего) не обращают внимание на системные «каталоги»: «Загрузки» и «Корзина» . А ведь в них могут остаться определенные файлы и документы, с которыми работали за ПК.

Папку «загрузки» можно открыть, нажав на Win+R, и использовав в меню «Выполнить» команду: shell:downloads.

Загрузки

Чтобы открыть корзину (даже если ее значка нигде нет): нажмите Win+R, и используйте команду Shell:RecycleBinFolder.

Просматриваем корзину

👉 Совет 6: как поймать с поличным «тайного работника» за вашим ПК

На мой взгляд, самый простой способ это сделать — воспользоваться спец. программами для контроля сотрудников (например, Clever Control ). Примечание : таких программ много, я просто привел одну из них.

Установка у Clever Control простая и интуитивно понятная, в процессе работы она будет незаметно фиксировать всё в спец. журнал (в т.ч. и делать снимки с веб-камеры, запоминать работающие программы, и т.д., в зависимости от ваших настроек).

Clever Control — одна из программ для контроля сотрудников (узнали, кто сидел за ПК!)

Clever Control — одна из программ для контроля сотрудников (узнали, кто сидел за ПК!)

Т.е. о том, что вы ее установили к себе на ПК, и что она работает — никто не узнает, а просматривать что творится за вашей системой вы сможете в любое удобное для вас время (даже не находясь возле нее ( прим. : с другого компьютера)).

Таким образом вы сможете узнать кто и что делает за вашим ПК, причем так, что «виновник» даже не узнает о том, что он «попался». 😉

Есть файл с общим доступом. Файл находится на общем сетевом жёстком диске. С этим файлом постоянно работают много человек.
1. Необходимо выяснить, открыт ли у в настоящее время у кого-нибудь из сотрудников данный файл.
2. Желательно выяснить, у кого именно открыт.

В случае, если файл не с общим доступом, то всё просто — он выводит табличку, что файл открыт конкретным пользователем. А вот если включён общий доступ — то ничего не сообщает. Более того, файл спокойно поддаётся переименованию, а также перемещению в другую папку, и сообщение о том, что файл занят каким-то процессом — не выводится. Через журнал изменений можно лишь выяснить, кем и когда файл был открыт (если при этом пользователь сохранял файл) и кем и когда было сделано последнее изменение. При этом кем сейчас он используется — не ясно.

Нужно это знать для того, чтобы внести изменения, которые невозможны при включённом общем доступе, и вот для этого нужно его отключить, но лишь в тот момент, когда файл никем не используется (ибо пользователи не смогут сохранить их изменения, если им отрубить общий доступ).

P.s. Доступа к администрированию сетевого ресурса (управление компьютером) нет.

Есть файл с общим доступом. Файл находится на общем сетевом жёстком диске. С этим файлом постоянно работают много человек.
1. Необходимо выяснить, открыт ли у в настоящее время у кого-нибудь из сотрудников данный файл.
2. Желательно выяснить, у кого именно открыт.

В случае, если файл не с общим доступом, то всё просто — он выводит табличку, что файл открыт конкретным пользователем. А вот если включён общий доступ — то ничего не сообщает. Более того, файл спокойно поддаётся переименованию, а также перемещению в другую папку, и сообщение о том, что файл занят каким-то процессом — не выводится. Через журнал изменений можно лишь выяснить, кем и когда файл был открыт (если при этом пользователь сохранял файл) и кем и когда было сделано последнее изменение. При этом кем сейчас он используется — не ясно.

Нужно это знать для того, чтобы внести изменения, которые невозможны при включённом общем доступе, и вот для этого нужно его отключить, но лишь в тот момент, когда файл никем не используется (ибо пользователи не смогут сохранить их изменения, если им отрубить общий доступ).

P.s. Доступа к администрированию сетевого ресурса (управление компьютером) нет. Aleksio

Сообщение Есть файл с общим доступом. Файл находится на общем сетевом жёстком диске. С этим файлом постоянно работают много человек.
1. Необходимо выяснить, открыт ли у в настоящее время у кого-нибудь из сотрудников данный файл.
2. Желательно выяснить, у кого именно открыт.

В случае, если файл не с общим доступом, то всё просто — он выводит табличку, что файл открыт конкретным пользователем. А вот если включён общий доступ — то ничего не сообщает. Более того, файл спокойно поддаётся переименованию, а также перемещению в другую папку, и сообщение о том, что файл занят каким-то процессом — не выводится. Через журнал изменений можно лишь выяснить, кем и когда файл был открыт (если при этом пользователь сохранял файл) и кем и когда было сделано последнее изменение. При этом кем сейчас он используется — не ясно.

Нужно это знать для того, чтобы внести изменения, которые невозможны при включённом общем доступе, и вот для этого нужно его отключить, но лишь в тот момент, когда файл никем не используется (ибо пользователи не смогут сохранить их изменения, если им отрубить общий доступ).

Отслеживание входа пользователей в книгу Excel

Представьте себе книгу Excel с очень важными для вас данными, сохраненную на общем сетевом диске компании, куда имеет доступ куча народу. Одним совсем не прекрасным утром вы открываете этот файл и обнаруживаете, что внутри кто-то поиграл в аль-каиду: формулы поломаны, данные стерты, дизайн нарушен. Поскольку вы опытный пользователь, то у вас, конечно же, была резервная копия этого важного документа (была же, правда?) и данные вы восстановите, но чисто из спортивного интереса хотелось бы все же узнать — КТО ЭТО СДЕЛАЛ?!

Давайте попробуем решить эту задачу. Итак, нам нужно:

  • фиксировать на отдельном (скрытом) листе имя пользователя, открывшего файл;
  • фиксировать там же дату-время открытия и закрытия файла;
  • по возможности усложнить взлом или обход такой защиты.

Этап 1. Создаем «Лог»

Добавим в нашу книгу новый лист, куда будет записываться информация о всех пользователях и назовем его, например, Лог. На нем создадим простую шапку будущего журнала учета посетителей:

blackbox1.png

Этап 2. Макросы фиксации входа-выхода

Теперь добавим макросы для записи на лист Лог даты-времени и имен пользователей при открытии и закрытии книги. Для этого нужно открыть редактор Visual Basic с помощью сочетания Alt+F11 или с помощью кнопки Visual Basic на вкладке Разработчик (Developer) и найти в левом верхнем углу панель Project (если она не отображается, то включить ее можно сочетанием клавиш Ctrl+R):

blackbox2.png

Двойным щелчком откройте модуль ЭтаКнига (ThisWorkbook) и вставьте туда пару наших макросов для обработки событий открытия и закрытия книги:

В первом приближении все уже должно работать. Попробуйте открыть-закрыть этот файл пару раз и убедитесь, что на лист Лог попадает ваше имя пользователя (логин входа в Windows) и дата-время:

blackbox3.png

Этап 3. Улучшаем надежность

Можно было бы скрыть лист Лог и на этом остановиться, но есть одно «но»: если у пользователя, который открывает нашу книгу, макросы разрешены по умолчанию либо он сам их разрешает, нажав в окне предупреждения на кнопку Включить содержимое, то все в порядке:

blackbox4.png

Но что если пользователь не разрешит выполнение макросов или они отключены у него по умолчанию? Тогда наши макросы отслеживания выполняться не будут и фиксации имени и даты не произойдет 🙁 Как же заставить пользователя разрешить использование макросов?

Чтобы обойти эту проблемку воспользуемся небольшой тактической хитростью. Добавьте в нашу книгу еще один чистый лист, назовите его Предупреждение и вставьте на него следующий текст:

blackbox5.png

Суть в том, чтобы по умолчанию скрыть в книге все листы кроме этого, а рабочие листы с данными отображать с помощью специального макроса. Если пользователь не разрешил выполнение макросов, то он увидит в книге только один лист с предупреждением. Если же макросы разрешены, то наш макрос обработки события открытия книги скроет лист с предупреждением и отобразит листы с данными. Чтобы пользователь сам не отобразил их — используем суперскрытие вместо обычного скрытия листов (параметр xlSheetVeryHidden вместо обычного False).

Чтобы реализовать все описанное, слегка изменим наши процедуры в модуле ЭтаКнига (ThisWorkbook):

Чтобы просмотреть скрытый Лог откройте редактор VisualBasic (Alt+F11), выделите лист на панели Project и измените его видимость на панели Properties, используя свойство Visible:

blackbox7.png

Если пользователи настолько продвинутые, что знают про суперскрытые листы и могут их отобразить через редактор Visual Basic или нарушить работу наших макросов, то можно дополнительно поставить пароль на просмотр и изменение макросов. Для этого щелкните правой кнопкой мыши по имени файла в панели Project (строка VBAProject (blackbox.xls)), выберите команду VBA Project Properties и включите флажок Lock project for viewing и задайте пароль на вкладке Protection:

blackbox8.png

Теперь точно никто не уйдет безнаказанным. Большой Брат следит за тобой! 😉

Узнать имя пользователя, открывшего файл (в локальной сети)

Нужно узнать перед заполнением файла Excel или Word данными из Access (если он уже открыт) кто из пользователей открыл его (чтобы «попросить» закрыть). Файл лежит на сервере, все пользователи могут в него что-то вносить. Windows 7, Офис 2010 и 2013
есть такой код. Как его соединить с моим?

Можно ли и как узнать имя пользователя открывшего файл
Можно ли и как узнать имя пользователя открывшего файл? Собственно сабж.

Как узнать имя или ip адрес атакующего по локальной сети?
Представим, что в помещении есть 3 ПК и один из них решил пошутить и прописать shutdown, но.

Узнать имя пользователя на ПК в сети по списку
Здравствуйте, в PS не силен,но есть необходимость вывести имена пользователей, которые залогинены.

Узнать имя пользователя у кого открыт файл
Доброго времени суток! Есть ли возможность по средствам vb.net узнать у какого пользователя открыт.

прямого пути пока не знаю.

как вариант: на событие открытие книги или документа пишете макрос, который будет определять имя пользователя, открывшего файл и сохранять его в любой текстовый файлик на сервере.
соответственно, на закрытие книги — удаляем этот файлик.
итого — нужно будет проверить, существует ли файлик на сервере, если да — то прочитать из него пользователя.

проблемы пока две:
1) у пользователя могут быть отключены макросы;
2) у пользователя может зависнуть комп или вырубиться электричество — и макрос на закрытие не отработает.

для решения второй проблемы можно дополнительно вначале проверять возможность открытия файла с полным доступом. если открывается — значит, не занят, независимо от наличия текстового файлика.

Belkin
Обычный пользователь
Обычный пользователь
Аватара пользователя

 
Сообщения: 63
Зарегистрирован: 02.11.2007 (Пт) 18:02
Откуда: Рязань

Кто открыл сетевой xls файл для записи.

Видел аналогичный вопрос, но на него так и не ответили, поэтому хочу попытать еще раз счастье ;)

Подскажите как решить вопрос:
Есть сетевой xls файл, если кто-то его открывает первым на запись, то при открытии ручками этого файла появляется окно с сообщением, что данный файл открыт пользователем «XXX», открыть файл только для чтения?
1. Как можно программно до открытия этого файла узнать что он уже занят другим пользователем? (вопрос минимума)
2. Как узнать кто держит этот файл? (вопрос максимума)

Вопросы актуальны для xls файла, но если есть универсальное решение, скажем еще и для текстовых, буду очень признателен.

Что смог накопать с сделать сам:
Только функцию для проверки занят ли файл. перед вызовом функции в параметр передавать проверенный (существующий) путь к файлу

Код: Выделить всё
Function file_read_only(strPath As String) As Boolean
On Error GoTo err

Dim fso As New FileSystemObject

'If fso.FileExists(strPath) = True Then 'файл существует
    Call fso.MoveFile(strPath, strPath) ' Пробуем переименовать в себя, если ошибка, то файл уже открыт кем-то с доступом на запись
    file_read_only = False 'Файл доступен для чтения
'End If
Exit Function

err:
    file_read_only = True ' Файл кем-то открыт

End Function

Необходимо определить пользователя который открыл файл, чтобы выслать ему сообщение о немедленном закрытии файла.
Думаю, что закрыть файл на стороне того пользователя это очень большая и кропотливая работа, поэтому ограничюсь сообщением.

Андрей.


iGrok
Артефакт VBStreets
Артефакт VBStreets
 
Сообщения: 4272
Зарегистрирован: 10.05.2007 (Чт) 16:11
Откуда: Сетевое сознание

Re: Кто открыл сетевой xls файл для записи.

Сообщение iGrok » 10.02.2011 (Чт) 0:03

Универсального способа, насколько я знаю, нет.
В случае с документами офиса, рядом с документом создаётся «блокирующий» файлик, в котором указано имя открывшего юзера. Только это не имя машины, а имя, которое было указано при установке офиса. Поэтому оно толком ничем не поможет.

Точно это можно сделать на novell’овской сети, т.к. она предоставляет такой функционал (отслеживание блокировок, рассылка сообщений, принудительное отключение юзера при наличии соответствующих прав, и т.п.). Возможно, есть какие-то подобные механизмы в майкрософтовской сетке, но этого я не знаю.

label:

cli

jmp label


Belkin
Обычный пользователь
Обычный пользователь
Аватара пользователя

 
Сообщения: 63
Зарегистрирован: 02.11.2007 (Пт) 18:02
Откуда: Рязань

Re: Кто открыл сетевой xls файл для записи.

Сообщение Belkin » 10.02.2011 (Чт) 9:30

iGrok
Такой файлик создается для .doc файлов, для .xls я что-то не нахожу.
Если такое сообщение (о пользователе) выводит Excel, значит он где-то читает эту информацию, может через какие-то API функции.
Значит как-то можно вытащить имя пользователя, вопрос ТОЛЬКО КАК? :)
Наблюдения:
Если другой пользователь открыл .doc файл, то создается файлик с тем же именем, только в начале добавляется ~$
При этом если смотреть, то у оригинального файла не изменяется «Date Modifited», а у нового файлика эта дата становится в дату открытия.
С .xls файлами по другому: Нового файла не создается, а «Date Modifited» у самого файа изменяется в дату открытия.
Так может Excel пишит информацию о пользователе открывшем файл в сам .xls вайл? Если да, то как ее оттуда прочитать?

Андрей.


Gloom
Бывалый
Бывалый
Аватара пользователя

 
Сообщения: 200
Зарегистрирован: 23.11.2004 (Вт) 15:57
Откуда: СПб

Re: Кто открыл сетевой xls файл для записи.

Сообщение Gloom » 10.02.2011 (Чт) 14:28

Может имеет смысл разрешить общий доступ к книге?
Тогда можно будет воспользоваться свойством UserStatus
Вообще, имя пользователя excel хранит в самом файле и его даже можно оттуда вытащить.
Но, как уже было сказано, это не имя компьютера, а значение из свойства Application.UserName и пользователь может написать туда всё, что ему заблагорассудится. Т.е. для цели отправки сообщения информация бесполезная.


Belkin
Обычный пользователь
Обычный пользователь
Аватара пользователя

 
Сообщения: 63
Зарегистрирован: 02.11.2007 (Пт) 18:02
Откуда: Рязань

Re: Кто открыл сетевой xls файл для записи.

Сообщение Belkin » 10.02.2011 (Чт) 15:47

Gloom
Нет, про общий доступ речи не идет.
А на счет имени, это действительно имя которое задано при установки офиса.
НО! В нашей большой организации это делается так, что это имя соответствует логину пользователя.
Поэтому, всеже я хотел бы извлечь это имя, а потом решать что с ним делать.
ПОДСКАЖИТЕ как вытащить это имя?

Андрей.


Gloom
Бывалый
Бывалый
Аватара пользователя

 
Сообщения: 200
Зарегистрирован: 23.11.2004 (Вт) 15:57
Откуда: СПб

Re: Кто открыл сетевой xls файл для записи.

Сообщение Gloom » 10.02.2011 (Чт) 17:10

Ну, в структуре xls файла (BIFF — Binary Interchange File Format) есть раздел WriteAccess:
The WriteAccess record specifies the name of the user who last created, opened, or modified the
file.

Т.е. нужно открыть файл, найти этот самый раздел и прочитать его.
Вот здесь (функция LastUser), например, это делается, но достаточно примитивно — будет работать, если в имени пользователя используется только английские буквы.
Также этот метод не сработает на файлах с парольной защитой, т.к. в этом случае раздел WriteAccess шифруется.


Belkin
Обычный пользователь
Обычный пользователь
Аватара пользователя

 
Сообщения: 63
Зарегистрирован: 02.11.2007 (Пт) 18:02
Откуда: Рязань

Re: Кто открыл сетевой xls файл для записи.

Сообщение Belkin » 10.02.2011 (Чт) 20:54

Gloom
ОГРОМНОЕ спасибо!
Судя по всему, это то что и хотел.

Хорошо бы было если такую информацию можно было бы получать для любого файла (например .txt)

Еще раз СПАСИБО!

Андрей.


iGrok
Артефакт VBStreets
Артефакт VBStreets
 
Сообщения: 4272
Зарегистрирован: 10.05.2007 (Чт) 16:11
Откуда: Сетевое сознание

Re: Кто открыл сетевой xls файл для записи.

Сообщение iGrok » 10.02.2011 (Чт) 22:21

Belkin писал(а):Хорошо бы было если такую информацию можно было бы получать для любого файла (например .txt)

Ну, я в первом же посту ответил насчёт этого.

Только если такой функционал поддерживает сам файл-сервер.
Если шара поднята на новелле или на самбе — они это умеют. Правда, не «стандартными» функциями, но в целом реализацию сделать можно.
Про виндовые файл-серверы — не знаю. Скорей всего, нет.

UPD:
А может и есть.
Копать в этом направлении:

http://www.kuban.ru/forum_new/forum15/arhiv/8411.html

UPD2:
Да и вот тут вроде что-то давали:

viewtopic.php?f=2&t=15322

label:

cli

jmp label


Belkin
Обычный пользователь
Обычный пользователь
Аватара пользователя

 
Сообщения: 63
Зарегистрирован: 02.11.2007 (Пт) 18:02
Откуда: Рязань

Re: Кто открыл сетевой xls файл для записи.

Сообщение Belkin » 11.02.2011 (Пт) 9:31

iGrok
Спасибо, я тебя еще в первом посте услышал.
Впринципе, я получил, что хотел. А остальное — размышление в слух.

Андрей.


Egor Olegovich
Начинающий
Начинающий
 
Сообщения: 1
Зарегистрирован: 06.03.2013 (Ср) 12:22

Re: Кто открыл сетевой xls файл для записи.

Сообщение Egor Olegovich » 06.03.2013 (Ср) 12:28

В программе Excel в меню Сервис выбираем доступ к книге.Откроется окно и смотрим кто же у нас открыл этот файл.Подсказал мой коллега мне!!!Пользуйтесь на здоровье. :D



Вернуться в VBA

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2

  • Remove From My Forums
  • Вопрос

  • в VBScript пытаюсь создать подключение к excel файлу. но эта книга лежит на сервере, иногда эта книга бывает занята другим пользователем. как
    я могу получить имя пользователя  кто занял данную таблицу? уведомление во вложении. Имя пользователя как зарегистрирован в office

    я могу читать данные о пользователях через aplication.userstatus.  но для этого она должна быть открыта для редактирования нескольким пользователям.
    Как можно узнать кем занята книга для редактирования 

Если вы администрируете общие сетевые папки Windows, скорее всего вы периодически сталкиваетесь с просьбами пользователей принудительно закрыть файлы, открытые (заблокированные) в сетевых папках другими пользователями. Обычно это связано с некорректной работой программы, неправильном завершении сессии пользователя или ситуациях, когда пользователь открыл файл и забыл закрыть его (ушел домой, в отпуск и т.д.). Во всех этих случаях файл в сетевой папке оказывается заблокированным, и другие пользователи не могут вносить в него изменения.

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

Содержание:

  • Вывод списка открытых файлов в сетевой папке Windows
  • Определяем пользователя, который открыл файл в сетевой папке с помощью Openfiles
  • Как принудительно закрыть открытый файл в Windows?
  • Get-SMBOpenFile: вывод списка открытых по сети файлов в PowerShell
  • Как удаленно закрыть открытые SMB файлы с помощью PowerShell?

Вывод списка открытых файлов в сетевой папке Windows

Список открытых по сети файлов в Windows можно получить с помощью стандартной графической консоли Computer Management (Управление компьютером —
compmgmt.msc
).

Запустите на файловом сервере консоль Computer Management (или подключитесь к нему консолью удаленно со своего компьютера) и перейдите в раздел System Tools -> Shared Folders -> Open files (Служебные программы -> Общие папки -> Открыты файлы). В правой части окна отображается список файлов на сервере, открытых удаленно. В данном списке указан локальный путь к файлу, имя учетной записи пользователя, количество блокировок и режим, в котором открыт файл (Read или Write+Read).

Открыты файлы на файловом сервере Windows

Этот же список открытых файлов можно получит с помощью встроенной консольной утилиты Openfiles. Например, с помощью следующей команды можно получить id сессии, имя пользователя и полный локальный путь к открытому файлу:

Openfiles /Query /fo csv |more

Openfiles /Query

При удаленном доступе пользователя к папке или файлу в сетевой папке (SMB) на сервере, для пользователя создается новая сессия. Вы можете управлять открытыми файлами с помощью идентификаторов этих сессий.

Вы можете вывести список открытых файлов на сервере удаленно. Например, чтобы вывести все открытые по сети файлы на сервере mskfs01, выполните:

Openfiles /Query /s mskfs01 /fo csv

Команда Openfiles позволяет также вывести список локально открытых файлов. Для этого на сервере нужно включить опцию Maintain Objects List (Построение списка объектов) командой
openfiles /local on
и перезагрузить сервер. После этого команда Openfiles будет отображать файлы, открытые локальными процессами (этот режим желательно использовать только для отладки, т.к. может негативно сказаться на производительности сервера).

Определяем пользователя, который открыл файл в сетевой папке с помощью Openfiles

Чтобы удаленно определить пользователя, который открыл (заблокировал) файл cons.adm в сетевой папке на сервере mskfs01, выполните команду:

Openfiles /Query /s mskfs01 /fo csv | find /i "cons.adm"

Ключ /i используется, чтобы выполнялся регистронезависимый поиск.

Можно указать только часть имени файла. Например, чтобы узнать, кто открыл xlsx файл, в имени которого есть строка farm, воспользуйтесь таким конвейером:

Openfiles /Query /s mskfs01 /fo csv | find /i "farm"| find /i "xlsx"

Можно, конечно найти открытый файл и в графической консоли Computer Management, но это менее удобно (в консоли нет возможности поиска).

Как принудительно закрыть открытый файл в Windows?

Чтобы закрыть открытый файл, нужно найти его в списке файлов секции Open Files и в контекстном меню выбрать пункт “Close Open File”.

Закрыть открытые файлы в сетевой папке

Если на файловом сервере сотни открытых файлов, найти их в консоли будет непросто. Удобнее воспользоваться утилитой Openfiles. Как мы уже говорили, она возвращает ID сессии открытого файла. Вы можете принудительно закрыть файл и сбросить подключение пользователя по ID SMB сессии. Сначала нужно определить ID сессии открытого файла:

Openfiles /Query /s mskfs01 /fo csv | find /i "farm"| find /i ".xlsx"

Теперь можно принудительно отключить пользователя по полученному идентификатору SMB сессии:

Openfiles /Disconnect /s mskfs01 /ID 67109098

Openfiles Disconnect - отключение файла по id сессии
Можно принудительно сбросить все сессии и освободить все файлы, открытые определённым пользователем:
openfiles /disconnect /s mskfs01 /u corpaivanova /id *

Обратите внимание, что принудительное закрытие файла, открытого клиентом на SMB сервере, вызывает потерю несохраненных данных. Поэтому команду
openfiles /disconnect
и командлет
Close-SMBOpenFile
(рассматривается ниже) нужно использовать с осторожностью.

Get-SMBOpenFile: вывод списка открытых по сети файлов в PowerShell

В версии PowerShell в Windows Server 2012/Windows 8 появились командлеты для управления сетевыми файлами и папками на SMB сервере. Эти командлеты можно использовать чтобы удаленно закрыть открытые по сети файлы.

Список открытых файлов можно получить с помощью командлета Get-SMBOpenFile. Чтобы закрыть файл (сбросить подключение), используется Close-SmbOpenFile.

Для вывода полного списка открытых файлов на сервере, выполните команду:

Get-SMBOpenFile

Get-SMBOpenFile вывод списка открытых файлов на SMB сервере с помощью powershell

Команда возвращает ID файла, ID сессии и полное имя файла.

Можно вывести список открытых файлов с именами пользователей и компьютеров (IP адресами):

Get-SmbOpenFile|select ClientUserName,ClientComputerName,Path,SessionID

poweshell вывод список пользователей, которые открыли файлы в сетевой папке windows

Можно вывести все файлы, открытые определенным пользователем:

Get-SMBOpenFile –ClientUserName "corpaaivanov"  |select ClientComputerName,Path

или с определенного компьютера (сервера):

Get-SMBOpenFile –ClientComputerName 192.168.12.170| select ClientUserName,Path

Можно вывести список открытых файлов по шаблону. Например, все открытые по сети exe файлы:

Get-SmbOpenFile | Where-Object {$_.Path -Like "*.exe*"}

или файлы с определенным именем:

Get-SmbOpenFile | Where-Object {$_.Path -Like "*защита*"}

Чтобы закрыть файл используется командлет
Close-SmbOpenFile
. Закрыть файл можно по ID:

Close-SmbOpenFile -FileId 4123426323239

Но обычно удобнее закрыть файл по имени:

Get-SmbOpenFile | where {$_.Path –like "*prog.xlsx"} | Close-SmbOpenFile -Force

С помощью
Out-GridView
можно сделать простую графическую форму для поиска и закрытия файлов. Следующий скрипт выведет список открытых файлов. Администратор должен с помощью фильтров в таблице Out-GridView найти, выделить нужные файлы и нажать ОК. В результате выбранные файлы будут принудительно закрыты.

Get-SmbOpenFile|select ClientUserName,ClientComputerName,Path,SessionID| Out-GridView -PassThru –title “Select Open Files”|Close-SmbOpenFile -Confirm:$false -Verbose

Get-SmbOpenFile вместе с out-gridview - powershell скрипт с графическим интерефейсом по выбору и принудительному закрыттию заблокированных (открытых) файлов в windows

Как удаленно закрыть открытые SMB файлы с помощью PowerShell?

Командлеты Get-SMBOpenFile и Close-SmbOpenFile можно использовать чтобы удаленно найти и закрыть открытые файлы. Сначала нужно подключиться к удаленному SMB серверу Windows через CIM сессию:

$sessn = New-CIMSession –Computername mskfs01

Также вы можете подключаться к удаленному серверам для запуска команд через командлеты PSRemoting: Enter-PSSession или Invoke-Command .

Следующая команда найдет SMB сессию для открытого файла
*pubs.docx
и завершит ее.

Get-SMBOpenFile -CIMSession $sessn | where {$_.Path –like "*pubs.docx"} | Close-SMBOpenFile -CIMSession $sessn

Подтвердите закрытие файла, нажав
Y
. В результате вы разблокировали открытый файл. Теперь его могут открыть другие пользователи.

Get-SMBOpenFile - удаленное управление открытых файлов

Чтобы убрать подтверждение закрытия файла на сервере, используйте ключ
–Force
.

С помощью PowerShell вы можете закрыть и разблокировать на файловом сервере все файлы, открытые определенным пользователем (пользователь ушел домой и не освободил файлы). Например, чтобы сбросить все файловые сессии для пользователя ipivanov, выполните:

Get-SMBOpenFile -CIMSession $sessn | where {$_.ClientUserName –like "*ipivanov*"}|Close-SMBOpenFile -CIMSession $sessn

Понравилась статья? Поделить с друзьями:
  • Как посмотреть недавние документы word
  • Как посмотреть кто открывал документ word
  • Как посмотреть не сохранившийся документ word
  • Как посмотреть кто использует файл excel
  • Как посмотреть название таблицы в excel