2012-08-22 76 views
1

我一直在使用用戶:: pwent在Perl來獲取系統用戶的全名:如何在Perl中的Windows上獲取系統用戶全名?

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

然而,​​是不是在Windows的Perl實現。在Windows上獲取用戶的全名有什麼選擇?是可用的麼?

+1

可能重複[如何以便攜方式在Perl中獲取當前用戶?](http://stackoverflow.com/questions/3526420/how-do-i-get-the-current-user-in -perl-in-a-portable-way) –

+1

@ sean-bright不,這個問題只包含登錄名,而不是用戶的全名。也就是說,它給了我「光鮮亮麗」,但我想要「肖恩光明」。 – theory

回答

3

戳的時候,我能找到的最好的事情就是用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不能正常工作as documented,但是這是不夠好,我。

相關問題