Python:如何获取当前用户的域\用户名

5

在Python中,我该如何以域名\用户名的格式获取已登录用户的用户名?以下代码只能获取用户名:

import getpass
import os

print(os.getlogin())
print(getpass.getuser())

需要使用Windows还是Linux? - Ari Gold
4个回答

9

请看下面:

import os
domain = os.environ['userdomain']
print(domain)

(但我发现这并没有提供 FQDN,只提供了 NetBIOS 名称)

getpass.getuser() + '\' + os.environ['userdnsdomain'] - leancz
@leancz 是的,这会一次性给你所有东西。 - Amperclock

6

如果您已经安装了pywin32,则可以调用相应的Windows函数:

import win32api
win32api.GetUserNameEx(win32api.NameSamCompatible)

请查看此MSDN页面,以获取其他可能的参数和输出。


这将返回登录会话的用户名,该用户名也应作为“%USERNAME%”和“%USERDOMAIN%”环境变量可用。该名称几乎总是与进程访问令牌中的用户SID相符,除了3个常见的服务帐户(即SYSTEM、LOCAL SERVICE和NETWORK SERVICE)以机器名称加美元符号(例如“SPAMBOX $”)登录。如果您正在使用其中一个帐户作为服务运行,则可能会感到惊讶。 - Eryk Sun

1

应该在Python 2和3中都能正常工作

import getpass
import platform

print(getpass.getuser()) #username
print(platform.node()) #hostname

0

Domain是指主机名吗?如果是的话,请尝试以下操作:

import socket
socket.getfqdn()

这里的Domainname代表Active Directory(或者对于恐龙来说是Windows NT)域。它可能与主机名不同。 - Serge Ballesta
返回计算机的域名 - Robben_Ford_Fan_boy

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接