Выход из системы пользователей при простое.
В общем, как ни пытался объяснить людям, что нужно нажимать Выход из системы в конце рабочего дня, так ни кто практически и не выходит. Название ОС Microsoft Windows Server 2003 R2, Standard Edition.
Есть ли стандартные средства для решения этого вопроса?
Вообще в идеале, что бы после 18 00, при простое удаленки пользователя более, чем 1 час, аккуратно закрывались программы и был произведен выход из системы=)
Мог бы сам написать батник, но как понять и не имею...
Есть ли стандартные средства для решения этого вопроса?
Вообще в идеале, что бы после 18 00, при простое удаленки пользователя более, чем 1 час, аккуратно закрывались программы и был произведен выход из системы=)
Мог бы сам написать батник, но как понять и не имею...
По теме из базы знаний
- Автоматизированная проверка конфигураций… и пара слов о стандартах разработки
- Тестирование интеграций между системами
- Не спеша, эффективно и правильно – путь разработки. Часть 2. Теория
- Не клади яйца в одну корзину. Как удовлетворить всех клиентов и не превратить конфигурацию в помойку
- Интеграция с 1С:Документооборотом. Интегрируй меня полностью
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1) danilfg,
Сам с такой же проблемой)) "как ни пытался объяснить людям"
из-за этого бэкапы толком не делались. Таймаут простоя всё спас конечно. Но вот если они перед уходом забывали закрывать 1С было печально. Стояла 1с 7.7 так процесс просто завершался при завершении сеанса, и приходилось каждый раз переиндексировать в монополе. Пришлось убрать из 1с окошко которое при закрытие всплывает (типа вы точно хотите выйти). Теперь вообще даже не думаю кто там у меня сидит в 1с, в 19.00 всех вырубает и до 9.00 никого не пускает))
Сам с такой же проблемой)) "как ни пытался объяснить людям"
из-за этого бэкапы толком не делались. Таймаут простоя всё спас конечно. Но вот если они перед уходом забывали закрывать 1С было печально. Стояла 1с 7.7 так процесс просто завершался при завершении сеанса, и приходилось каждый раз переиндексировать в монополе. Пришлось убрать из 1с окошко которое при закрытие всплывает (типа вы точно хотите выйти). Теперь вообще даже не думаю кто там у меня сидит в 1с, в 19.00 всех вырубает и до 9.00 никого не пускает))
Есть команда query user с помощью которой можно в скрипте получать данные о сеансах и закрывать. Ну и сам скрипт запускать в период например с 18 по 23.
Команда терминального сервера Query user
Отображает сведения о пользовательских сеансах на сервере терминалов.
Синтаксис Query user
query user [{имя_пользователя|имя_сеанса|код_сеанса}] [/server:имя_сервера]
Параметры Query user
имя_пользователя
Задает запрашиваемое имя пользователя для входа.
имя_сеанса
Отображает имя запрашиваемого сеанса.
код_сеанса
Отображает код запрашиваемого сеанса.
/server:имя_сервера
Отображает запрашиваемый сервер терминалов. В противном случае используется текущий сервер терминалов.
/?
Отображает справку в командной строке.
Примечания
Эта команда может использоваться для выяснения того, вошел ли определенный пользователь на заданный сервер терминалов. С помощью команды query user можно получить следующие сведения:
имя пользователя;
имя сеанса на сервере терминалов;
код сеанса;
состояние сеанса (активно или отключено);
время простоя сеанса (количество минут, прошедшее с последнего нажатия клавиши клавиатуры или движения указателя мыши);
дату и время входа пользователя.
Для использования команды query user необходимо иметь разрешение «Полный доступ» или специальное разрешение на запрос информации.
При использовании команды query user без задания имени пользователя, имени сеанса или кода сеанса на экран выводится список всех пользователей, которые вошли на сервер. Кроме того, можно использовать команду query session для отображения списка всех сеансов на сервере.
При отображении сведений командой query user символ (>) выводится перед текущим сеансом.
Параметр /server необходимо использовать только при вводе команды query user с удаленного сервера.
Примеры Query user
Чтобы отобразить сведения о всех пользователях, которые вошли в систему, введите:
query user
Чтобы отобразить сведения о пользователе USER1 на сервере SERVER1, введите:
query user USER1 /server:SERVER1
ПоказатьОтображает сведения о пользовательских сеансах на сервере терминалов.
Синтаксис Query user
query user [{имя_пользователя|имя_сеанса|код_сеанса}] [/server:имя_сервера]
Параметры Query user
имя_пользователя
Задает запрашиваемое имя пользователя для входа.
имя_сеанса
Отображает имя запрашиваемого сеанса.
код_сеанса
Отображает код запрашиваемого сеанса.
/server:имя_сервера
Отображает запрашиваемый сервер терминалов. В противном случае используется текущий сервер терминалов.
/?
Отображает справку в командной строке.
Примечания
Эта команда может использоваться для выяснения того, вошел ли определенный пользователь на заданный сервер терминалов. С помощью команды query user можно получить следующие сведения:
имя пользователя;
имя сеанса на сервере терминалов;
код сеанса;
состояние сеанса (активно или отключено);
время простоя сеанса (количество минут, прошедшее с последнего нажатия клавиши клавиатуры или движения указателя мыши);
дату и время входа пользователя.
Для использования команды query user необходимо иметь разрешение «Полный доступ» или специальное разрешение на запрос информации.
При использовании команды query user без задания имени пользователя, имени сеанса или кода сеанса на экран выводится список всех пользователей, которые вошли на сервер. Кроме того, можно использовать команду query session для отображения списка всех сеансов на сервере.
При отображении сведений командой query user символ (>) выводится перед текущим сеансом.
Параметр /server необходимо использовать только при вводе команды query user с удаленного сервера.
Примеры Query user
Чтобы отобразить сведения о всех пользователях, которые вошли в систему, введите:
query user
Чтобы отобразить сведения о пользователе USER1 на сервере SERVER1, введите:
query user USER1 /server:SERVER1
(5) Спасибо, давно искал что-то наподобие этого. Скажите а через WMI или реестор как-то получить можно это?
А то получается сохраняем в файл результат команды, а там как его обрабатывать? Он же не структурированный получается.
Может подскажете есть ли каки-то API Windows которые позволяют поллучить эти же данные?
А то получается сохраняем в файл результат команды, а там как его обрабатывать? Он же не структурированный получается.
Может подскажете есть ли каки-то API Windows которые позволяют поллучить эти же данные?
Можно еще заморочиться сделать это средствами 1С, если 7.7 то в 1cpp есть интересный класс Информатор. Который позволяет получать время простоя системы:
ПолучитьВремяПростояСистемы / GetIdleTimeOfSystem
Синтаксис: ПолучитьВремяПростояСистемы()
Возвращает: тип: Время простоя в миллисекундах.
Важно: Метод работает только на Windows ME/2000/XP и выше.
Описание: Возвращает время простоя сеанса работы пользователя в Windows.
Используется соответствующие системные функции из WinAPI.
Удобно использовать внутри таймеров/обработки ожидания для проверки бездействия пользователя. Например, в целях завершения работы, если это задано административной политикой.
Пример: Создайте внешнюю обработку со следующим модулем и нажмите Сформировать Потом какое-то время ничего не нажимайте клавиатуру и не трогайте мышь и вы увидете, как увеличивается время простоя. А если тронуть мышь или нажать клавишу, время простоя сбросится к нулю!
Перем РасширениеФормы;
Перем Информатор;
Процедура Таймер() Экспорт
ПрошлоВремени = Информатор.ПолучитьВремяПростояСистемы();
Сообщить("ПрошлоВремени = <"+ПрошлоВремени+">");
КонецПроцедуры
//*******************************************
Процедура Сформировать()
РасширениеФормы = СоздатьОбъект("РасширениеФормы");
РасширениеФормы.ОбработкаОжидания("Таймер", 50);
Информатор = СоздатьОбъект("Информатор");
КонецПроцедуры
ПоказатьСинтаксис: ПолучитьВремяПростояСистемы()
Возвращает: тип: Время простоя в миллисекундах.
Важно: Метод работает только на Windows ME/2000/XP и выше.
Описание: Возвращает время простоя сеанса работы пользователя в Windows.
Используется соответствующие системные функции из WinAPI.
Удобно использовать внутри таймеров/обработки ожидания для проверки бездействия пользователя. Например, в целях завершения работы, если это задано административной политикой.
Пример: Создайте внешнюю обработку со следующим модулем и нажмите Сформировать Потом какое-то время ничего не нажимайте клавиатуру и не трогайте мышь и вы увидете, как увеличивается время простоя. А если тронуть мышь или нажать клавишу, время простоя сбросится к нулю!
Перем РасширениеФормы;
Перем Информатор;
Процедура Таймер() Экспорт
ПрошлоВремени = Информатор.ПолучитьВремяПростояСистемы();
Сообщить("ПрошлоВремени = <"+ПрошлоВремени+">");
КонецПроцедуры
//*******************************************
Процедура Сформировать()
РасширениеФормы = СоздатьОбъект("РасширениеФормы");
РасширениеФормы.ОбработкаОжидания("Таймер", 50);
Информатор = СоздатьОбъект("Информатор");
КонецПроцедуры
тоже была такая проблема. сделал проще. в автозагрузку всем пользователям закинул программку, которая скрывает кнопку закрытия RDP сеанса - тот самый крестик "Х" (все легко решается с помощью WinAPI). В результате завершить RDP-сеанс можно только выполнив Выход из системы. В дополнение - запрет выключения/перезагрузки клиентского компа пока есть хоть одна запущенная RDP-сессия.
Все работает на ура.
Все работает на ура.
Я еще в шадулер на 23:00 закинул батник следующего содержания:
Это принудительный логофф всех терминальных пользователей. К сожалению, программы закрываются принудительно, 1С 7.7, например, надо переиндексировать.
for /f "tokens=3 skip=3" %%a IN ('qwinsta') DO rwinsta %%a
for /f "tokens=2" %%a IN ('query session ^| find /i "Диск"') DO logoff "%%a" /v
Это принудительный логофф всех терминальных пользователей. К сожалению, программы закрываются принудительно, 1С 7.7, например, надо переиндексировать.
Много решений данной проблемы. Даже мне было интересно почитать. Имея довольно большой опыт работы в администрировании.
Я делал толи проще толи сложнее. Когда приходит время делать бекап, запускался скрипт, который смотрел кто сидит в 1С (не важно какая) и принудительно закрывала все открытые документы (без сохранения). и делался бекап.
А то что на утро из-за глюка windows некоторые пользователи не могли войти, хотя такое редко случалось, писал служебка, на юзера за не выполнение требований к терминальному доступу. Но перед этим необходимо его создать и сделать журнал. После нескольких выговор юзеры начинают выполнять их.
Раз не понимают, необходимо действовать другими методами.
Я делал толи проще толи сложнее. Когда приходит время делать бекап, запускался скрипт, который смотрел кто сидит в 1С (не важно какая) и принудительно закрывала все открытые документы (без сохранения). и делался бекап.
А то что на утро из-за глюка windows некоторые пользователи не могли войти, хотя такое редко случалось, писал служебка, на юзера за не выполнение требований к терминальному доступу. Но перед этим необходимо его создать и сделать журнал. После нескольких выговор юзеры начинают выполнять их.
Раз не понимают, необходимо действовать другими методами.
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот