Windows 系统 SYSTEM 权限 Python 获取当前登陆用户名及用户路径

使用 getpass.getuser() 或者 os.getlogin() 可以很轻松的获取当前用户名,但是在 SYSTEM 权限下或者用户修改过用户名,导致用户名和用户目录不一致

可以使用下面的方法获取用户路径

首先要引入两个第三方的包

import win32ts

from win32com.shell import shell, shellcon

//获取当前用户 session_id
console_session_id = win32ts.WTSGetActiveConsoleSessionId() 

// 获取当前用户 token
console_user_token = win32ts.WTSQueryUserToken(console_session_id)

// 模拟用户登陆
win32security.ImpersonateLoggedOnUser(console_user_token) 

// 获取当前用户路径
user_path = shell.SHGetFolderPath(0, shellcon.CSIDL_PROFILE, console_user_token, 0) 

// 退出登陆
win32security.RevertToSelf() 

user_pathC://Users/user

https://docs.microsoft.com/en-us/windows/win32/shell/csidl 根据文档 CSIDL 也可以换成别的,比如 Desktop 或者 Documents 路径

console_session_id = win32ts.WTSGetActiveConsoleSessionId()
user_path = shell.SHGetFolderPath(0, shellcon.CSIDL_PROFILE, 0, 0)

也可以在普通用户或管理员用户下获得真实用户路径


Python

194 字

2020-09-13 11:42 +0900

2020-09-15 14:39 +0900

comments powered by Disqus