gpt4 book ai didi

python - pwd.getpwnam(username).pw_dir 在 Windows 中的等价物是什么?

转载 作者:太空狗 更新时间:2023-10-29 21:01:52 33 4
gpt4 key购买 nike

Python pwd 模块提供对 getpwnam(3) POSIX API 的访问,可用于通过用户名获取特定用户的主目录,以及确定用户名是否有效.如果使用不存在的用户名调用 pwd.getpwnam 将引发异常。

起初似乎可以通过 os.path.expanduser('~username') 以跨平台的方式实现相同的结果。但是,对于 Windows XP 上的 Python 2.6,这似乎实际上不会为不存在的用户名产生故障。此外,在 Windows XP 上的 Python 2.5 上,即使对于有效用户,它似乎也会失败。

能否在 Windows 上可靠地获取此信息?怎么办?

最佳答案

阅读2.6 documentation显示 os.path.expanduser() 在 Windows 上损坏:

On Windows, HOME and USERPROFILE will be used if set, otherwise a combination of HOMEPATH and HOMEDRIVE will be used. An initial ~user is handled by stripping the last directory component from the created user path derived above.

什么?这假定所有用户主目录都必须位于同一父目录下。嗯嗯!

挖掘起来有点困难,但这里有一个解决方案,可以通过给定名称查找本地用户:

from win32security import LookupAccountName, ConvertSidToStringSid
from _winreg import OpenKey, QueryValueEx, HKEY_LOCAL_MACHINE

def getUserDir(userName):
ssid = ConvertSidToStringSid(LookupAccountName(None, userName)[0])
key = OpenKey(HKEY_LOCAL_MACHINE, r'SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList\\' + ssid)
return QueryValueEx(key, 'ProfileImagePath')[0]

关于python - pwd.getpwnam(username).pw_dir 在 Windows 中的等价物是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3305787/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com