Вы здесь

Программа для контроля рабочего времени за компьютером. Logon-Logoff


Приветствую, некоторое время назад, руководство захотело программу для учета рабочего времени за компьютером. Этакий СКУД для компьютера. То есть программа должна фиксировать входы/выходы в систему, а также простой компьютера.

Поиски в интернете не дали результатов, все программы на которые удалось нактнуться во первых платные, во вторых функционал у них гораздо больше нацелен на шпионаж (взять тот же Стахановец – зло вселенского масштаба =) ).

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

История изменений:

]]>0.2.0.2]]>
- Исправлена ошибка - превышен максимальный размер вложенности хранимой процедуры.
- Добавлена возможность задания времени работы по умолчанию.
- Мелкие испрвления и доработки

Системные требования и описание:

Открыл исходный код программы, на github находится ]]>тут]]>.

Скачать программу можно ]]>здесь]]>.

Для работы программы необходим установленный .net framework 4, версия ОС должна быть Windows 7 или выше, компьютер должен быть в домене. Уровень леса должен быть не ниже 2008. Так же должен быть установлен mssql сервер не ниже 2008, можно Express, на нем должна быть возможность авторизации средствами SQL сервера.

Программа состоит из нескольких частей:

- Так называемый бэкэнд, он же агент – работает на каждом компьютере, отправляет информацию на сервер баз данных, следит за простоем компьютера.

- База данных – тут думаю все понятно, хранит в себе информацию о логонах/логоффах.

- Агент сервера – сервис который периодически проверяет компьютер на доступность в сети (пингует компьютеры), если компьютер не доступен, то записывает выход пользователя с этого компьютера, если в фаерволле компьютеров стоит запрет на ICMP, то эту службу нужно выключить (служба называется logon_server_service).

- Так называемый фронтенд – клиентское приложение которое собирает информацию с базы данных и выводит ее в читаемом виде.

Установка:

Запускаем установщик (logon-logoff install.msi) устанавливаем программу.

Переходим в папку с установленной программой (по умолчанию C:\Program Files (x86)\logon-logoff), переходим в папку sql, копируем из этой папки скрипт logon-logoff.sql на sql сервер.

Запускаем SQL Server Management Studio и открываем скопированный скрипт, выполняем его. Будет создана база данных logon-logoff.

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

Запускаем оснастку службы (services.msc), находим службу logon_server_service и запускаем ее.

Запускаем powershell от имени администратора и переходим в папку GPO в папке с установленной программой, выполняем скрипт gpo-install.ps1. На контроллер домена будут скопированы файлы агента и добавлена групповая политика, которая будет распространять агента и запускать его. Если у вас сеть без домена, то запускать этот скрипт не нужно. Если вы ставите программу не на серверную ОС, чего я делать не рекомендую, тогда нужно перед запуском скрипта поставить RSAT.

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

Установка завершена.

Использование.

Если вы хотите запускать клиентскую часть программы на другом компьютере, то можно воспользоваться установщиком client_app_installer.msi. После установки для настройки параметров нужно запустить программу logon-logoff.exe от имени администратора. Внимание! Не устанавливайте на одном компьютере серверную и клиентские части!

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

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

В выпадающем списке можно выбрать пользователя, будет отображаться информация по пользователю – сколько раз опоздал, сколько раз недоработал, сколько времени провел на работе и сколько времени провел за компьютером.

Если поставить галку показывать все события, тогда будет графическое отображение о том, когда пользователь находился за компьютером, соответственно зеленым выделяется если пользователь находился за компьютером, красным если отсутствовал. Можно изменять масштаб кнопками + и – или используя комбинацию CTRL + колесо прокрутки.

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

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

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

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

В случае если вы захотите изменить параметры подключения к базе данных агентов, то вам нужно будет изменить эти параметры в настройках клиентского приложение, и после этого из папки из PowerShell и выполнить скрипт gpo-install.ps1из папки с программой.

Удаление программы.

Перед тем как удалять программу из панели управления нужно запустить скрипт gpo-delete.ps1 из PowerShell запущенный с правами администратора, лежащий в папке gpo, в папке куда была установлена программа. Этот скрипт удалит файлы с контроллера домена, и создаст групповую политику, которая удалит папки, файлы и задание планировщика заданий с компьютеров

 

В программе возможны баги, просьба строго не судить, это первая программа, написанная мной (не считая программок которые писались во время учебы в университете).

Видео по теме:

2 1

Поделитесь статьей с друзьями в соц. сетях, возможно, она будет им полезна.


Если вам помогла статья, вы можете >>отблагодарить автора<<


Комментарии

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

0 0

Добрый день, при закрытии окна РДП происходит дисконнект, и это учитывается как выход. Если окно будет не закрыто, а свернуто, через 5 минут (по умолчанию) будет записан выход, из за бездействия.

0 0

Попробовал поставить в домене WIN2008 R2  Вашу программу. На машины в шедулер и и в автозагрузку файлы были установлены с помошью групповой политики. Но данные на сервер не попадают. В консоли пусто. 

0 0

Если я запущу скрипт GPO она распространится  на всех пользователей домена? или только создаст группу безопасности в которую надо будет закинуть нужных пользователей? 

0 0