1

Мне нужно написать сценарий в Perl под Windows, который получит имя пользователя и пароль. Сценарий должен аутентифицировать пользователя в отношении учетных записей пользователей на этом компьютере, а также проверять, принадлежит ли он группе «Администраторы». Сервер не находится в каком-либо домене и не имеет Active Directory, а только локальных учетных записей.Аутентификация пользователя с Perl от локальных пользователей Windows

Я искал решение Perl, но все, что я могу найти, - это подключение к службам LDAP. Я также искал способы аутентификации пользователя из командной строки, но я не мог найти что-то, что работает для этого случая. Возможно, я искал неправильные слова.

Я хотел бы знать, может ли кто-нибудь из вас подумать о способе достижения этого.

Заранее благодарим за любые комментарии! :-)

ответ

0

Итак, я нашел способ сделать это. Мне все равно хотелось бы услышать от вас, ребята, чтобы узнать, есть ли лучший способ.

Активное состояние Perl включает в себя модуль, называемый Win32::UserAuthentication, который не задокументированных (а не на CPAN) и содержит предупреждение о том, что не поддерживается. Однако он работает над XS и возвращает логическое значение при аутентификации локального пользователя. Пока это работает очень хорошо и быстро для этой части.

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

net user $user | grep Administrators 

который работает довольно быстро тоже, и до сих пор работает для этой цели.

ПРИМЕЧАНИЕ. Для тех, кто пытается выполнить команду выше, у меня есть только grep, потому что она находится на моем системном пути благодаря установке Cygwin.

Если лучшее решение, если предлагается, я выберу его как лучший ответ.

Спасибо,

Francisco

+0

Вы можете использовать встроенную функцию 'AuthenticateUser ($ домен, $ пользователь, $ PW);' – hwnd

+0

построен в где? Если вы имеете в виду Perl, это именно то, что я использую через модуль 'Win32 :: UserAuthentication', который не встроен, это просто функция, экспортируемая этим модулем. Дело в том, что, как я уже сказал, модуль не включен в CPAN, это эксклюзивный элемент ActivePerl (хотя я просто скопировал его на свой встроенный Perl без проблем), не документирован и не поддерживается. –

+0

Да, я имел в виду функцию от модуля. Да, я тоже не нашел никакой другой документации по этому модулю. – hwnd