python - 获取会话用户

时间:2017-12-10 08:26:01

标签: python windows

我在PC上为不同的用户运行相同的Python脚本(Windows 10)。此脚本必须获取实际登录的用户。例如getpass.getuser()不起作用,因为它只返回运行Python脚本的用户。我怎么能得到这个?谢谢你的帮助!

1 个答案:

答案 0 :(得分:2)

Run as ... 的重点是模仿另一个用户的环境,当然,当你查询用户名时(这实际上可以获得%USERNAME%的值env.variable)你将获得运行脚本的那个。

要获取当前登录的用户,您将推出当前会话,为此,至少,您必须查询WMIC(或直接访问Win32 API)。类似的东西:

import subprocess

def get_session_user():
    res = subprocess.check_output(["WMIC", "ComputerSystem", "GET", "UserName"],
                                  universal_newlines=True)
    _, username = res.strip().rsplit("\n", 1)
    return username.rsplit("\\", 1)

请注意,这将返回一个包含当前登录用户的系统/域和用户名本身的元组,因此请将其命名为:

system, username = get_session_user()

同时获得两者。