2

我一直在使用 User::pwent 在 Perl 中获取系统用户的全名:

require User::pwent;
my $full_name = (User::pwent::getpwnam(getlogin)->gecos)[0];

但是,getpwnam在 Windows Perl 中没有实现。在 Windows 上获取用户全名的替代方法是什么?是可用的么?

4

1 回答 1

4

戳了一下,我能找到的最好的方法是使用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 不像记录的那样工作,但这对我来说已经足够了。

于 2012-08-22T21:27:29.340 回答