我一直在使用 User::pwent 在 Perl 中获取系统用户的全名:
require User::pwent;
my $full_name = (User::pwent::getpwnam(getlogin)->gecos)[0];
但是,getpwnam
在 Windows Perl 中没有实现。在 Windows 上获取用户全名的替代方法是什么?是可用的么?
我一直在使用 User::pwent 在 Perl 中获取系统用户的全名:
require User::pwent;
my $full_name = (User::pwent::getpwnam(getlogin)->gecos)[0];
但是,getpwnam
在 Windows Perl 中没有实现。在 Windows 上获取用户全名的替代方法是什么?是可用的么?
戳了一下,我能找到的最好的方法是使用Win32API::Net::GetUserInfo()
:
require Win32API::Net;
Win32API::Net::UserGetInfo( '', $self->sysuser, 10, my $info = {} );
my $full_name = $info->{fullName};
需要让它在一些 Windows 机器上运行,以确保它工作。
更新:确认可以使用 10 级用户信息:
> perl -MWin32API::Net -E "Win32API::Net::UserGetInfo('',Win32::LoginName(), 10, my $info = {} ); say $info->{fullName}"
Bartholomew Simpson
不知道为什么 1011 不像记录的那样工作,但这对我来说已经足够了。