Запрет на вход в сеть с одинаковыми именами
Возможно это есть в настройках политики
безопасности сервера, но я что-то такого в явном
виде не нашел. При входе пользователя в домен
выполняется батник, как определить что пользователь
с таким именем уже подключен к сети (а дальше уже
принимать меры:))?
Как вышеозначенную тему организовать в скрипте?
Возможно это есть в настройках политики
безопасности сервера, но я что-то такого в явном
виде не нашел. При входе пользователя в домен
выполняется батник, как определить что пользователь
с таким именем уже подключен к сети (а дальше уже
принимать меры:))?
Домен на Windows 2000/XP/2003?
Если - "да", то настроек политики безопасности с запретом на регистрацию нескольких сеансов под одним именем нет.
У нас реализовано так:
1. Есть два сценария на VBS. Один регистрирует начало сеанса, другой - завершение.
2. Сценарии запускаются на основании настроек политики безопасности домена, заданных в ключе: Политика "Default Domain Policy" – Конфигурация пользователя – Конфигурация Windows – Сценарии (вход/выход из системы).
2.1. Сценарий входа создаёт в некотором сетевом каталоге текстовый файл, имя которому задаётся по имени зарегистрированного сеанса.
Сценарий выхода этот файл удаляет.
2.2. Если сценарий входа обнаруживает, что файл с таким же именем, как и у регистрирующегося в сети пользователя, уже существует, то он выдёт пользователю сообщение об отказе в регистрации сеанса и немедленно завершает сеанс.
Здесь, правда, есть "подводный камень": при любом завершении сеанса начинает работать сценарий выхода и удаляет файл с именем уже зарегистрировавшегося пользователя. Таким образом, вторая попытка входа "нарушителя дисциплины" увенчается успехом.
Чтобы избежать такой ситуации сценарий входа вносит в создаваемый им файл имя компьютера, на котором был открыт сеанс, а сценарий выхода удаляет файл лишь в том случае, когда имя указанного в нём компьютера совпадает с именем станции, на которой завершается сеанс.
3. Включена политика "Синхронный запуск сценариев входа в систему" (ключ Конфигурация компьютера – Административные шаблоны – Система – Вход в систему).
Это, безусловно, не самый лучший способ решения задачи. Например, если пользователей в сети много, да ещё и сеансы открываются/закрываются часто, то требуется наличие высокопроизводительных компьютеров, выполняющих роль серверов (или, по крайней мере, быстрых дисков). Зато это, пожалуй, самый простой способ.
С точки зрения программирования большая часть действий сводится к работе с файлами и различным сравнениям (у нас, например, часть учётных записей может быть использована для регистрации нескольких сеансов одновременно, кроме того используются вложенные группы пользоветелей).
Самые сложные моменты:
1. Определение имён пользователя и компьютера.
Dim objSysInfo 'As ADSystemInfo
Dim cmpInfo,usrInfo
Dim cmpName,usrName
Set objSysInfo = CreateObject("ADSystemInfo")
cmpInfo=objSysInfo.ComputerName
usrInfo=objSysInfo.UserName
Set objSysInfo = Nothing
x=InStr(1,cmpInfo,",",vbTextCompare)
cmpName=Mid(cmpInfo,4,x-4)
x=InStr(1,usrInfo,",",vbTextCompare)
usrName=Mid(usrInfo,4,x-4)
2. Принудительное завершение сеанса.
Dim objWMIService,colOperatingSystems,objMy
Set objWMIService = GetObject("winmgmts: {impersonationLevel=impersonate,(Shutdown)}!\\.\root\cimv2")
Set colOperatingSystems = objWMIService.ExecQuery("Select * from Win32_OperatingSystem")
For Each objMy In colOperatingSystems
objMy.Win32Shutdown(4)
Next
Если есть что-нибудь в эл. виде по работе с Active Directory можешь поделиться?
По ходу дела еще одна засада: некорректное завершение сеанса (в этом случае скрипт при выходе не отработает, хотя это не очень страшно, т.к. это уже внештатная ситуация => не часто происходит).
У нас это зависит, по большей части, от интенсивности открывания/закрывания сеансов, так как высокопроизводительными серверами мы не располагаем, а пользователей - много.
Бывает не каждый день и не более трёх случаев в день (по всем возможным причинам).
Выход очень прост - повторная регистрация пользователя (всё будет благополучно, если он регистрируется на той же станции, на которой работал прежде).
Замечу, что я описал минимизированный алгоритм сценария входа. У нас он сложнее, а значит и ресурсов "съедает" больше.
Если есть что-нибудь в эл. виде по работе с Active Directory можешь поделиться?
К сожалению, в электронном виде ничего нет. Если надо, могу перечислить литературу, которой пользуемся.
Могу также поделиться макросом для пакетной процедуры создания и первичной настройки учётных записей пользователей.