gpt4 book ai didi

python - 在python中如何获取Windows中当前用户的SID?

转载 作者:行者123 更新时间:2023-12-03 08:44:53 24 4
gpt4 key购买 nike

我需要从 python 脚本获取当前登录用户的 SID。一种选择是在 shell 到命令提示符命令 whoami/user 时读取返回文本。但这真的很难看。当然一定有更好的方法吗?

最佳答案

在 Mehrdad 在他的评论中提到的 programcreek 网站上进行浏览后

我想出了这个

# pip install pywin32
import win32security

desc = win32security.GetFileSecurity(
".", win32security.OWNER_SECURITY_INFORMATION
)
sid = desc.GetSecurityDescriptorOwner()

# https://www.programcreek.com/python/example/71691/win32security.ConvertSidToStringSid
sidstr = win32security.ConvertSidToStringSid(sid)
print("Sid is", sidstr)

可能需要一些调整,因为我只是获取拥有当前目录的用户。

this pywin32 github 上的示例

from ntsecuritycon import *
import win32api, win32security, winerror

# This is a Python implementation of win32api.GetDomainName()
def GetDomainName():
try:
tok = win32security.OpenThreadToken(win32api.GetCurrentThread(),
TOKEN_QUERY, 1)
except win32api.error as details:
if details[0] != winerror.ERROR_NO_TOKEN:
raise
# attempt to open the process token, since no thread token
# exists
tok = win32security.OpenProcessToken(win32api.GetCurrentProcess(),
TOKEN_QUERY)
sid, attr = win32security.GetTokenInformation(tok, TokenUser)
win32api.CloseHandle(tok)

name, dom, typ = win32security.LookupAccountSid(None, sid)
return dom

if __name__=='__main__':
print("Domain name is", GetDomainName())

使用sidstr = win32security.ConvertSidToStringSid(sid)方法更改它。

我认为它正在获取当前进程的用户,这是更理想的。 (我仅以一个用户身份使用我的系统,因此我确信第一个用户适用于许多用例)

关于python - 在python中如何获取Windows中当前用户的SID?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61886730/

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