Как получить информацию о пользователях и группах в Perl в Windows?

#windows #perl #etcpasswd #getpwuid

Вопрос:

Perl имеет несколько встроенных функций для доступа к /etc/passwd в системах Unix (и в других местах, если поддерживается) для получения информации о пользователях и группах. Например,

 my $name = getpwuid($uid);
 

вернет имя пользователя, указанное в идентификаторе пользователя, или отменит определение, если такого пользователя нет.

Если сценарий Perl должен быть переносимым и выполняться в Unices и Windows, как получить доступ к информации о пользователях и группах? ActivePerl, похоже, поддерживает модули User::grent и User::pwent, которые предоставляют доступ по полю к /etc/passwd-даже в Windows. Любопытно, что они не поддерживают встроенные функции getpw* и getgr*. Какие еще существуют альтернативы?

Ответ №1:

Вы могли бы использовать этот Win32::NetAdmin модуль.

UserGetAttributes и GroupIsMember выглядят так, как будто они делают то, что вам нужно.

Ответ №2:

Как ни странно, сборка Interix Perl, которая поставляется вместе со службами Microsoft для Unix, поддерживает getpw* и друзей.