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_path
为 C://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)
也可以在普通用户或管理员用户下获得真实用户路径