李喆祎 2024-06-10 15:15 采纳率: 60%
浏览 3
已结题

Python 获取 SID

我希望用Python获取到Windows当前用户的SID,如

def get_usr_sid():
    ...
    return ...
  • 写回答

2条回答 默认 最新

  • 专家-赤兔[在线] 全栈领域优质创作者 2024-06-10 15:15
    关注

    引自免费微信小程序:皆我百晓生

    要获取Windows系统中当前用户的SID(安全标识符), 可以使用win32security模块,这是Python中用于Windows安全操作的扩展模块。以下是详细的步骤和代码示例:

    首先,确保你的Python环境中安装了pywin32包,这个包包含了win32security模块。如果没有安装,可以通过以下命令进行安装:

    pip install pywin32
    

    接下来是获取当前用户SID的Python函数实现:

    import win32security
    
    def get_usr_sid():
        # 获取当前用户的信息
        user = win32security.GetUserNameEx(win32security.NameSamCompatible)
        
        # 使用用户信息获取SID
        sid = win32security.GetTokenInformation(
            win32security.OpenProcessToken(
                win32security.GetCurrentProcess(),
                win32security.TOKEN_QUERY),
            win32security.TokenUser)[0]
        
        # 将SID转换为字符串格式
        sid_str = win32security.ConvertSidToStringSid(sid)
        
        return sid_str
    
    # 调用函数并打印结果
    print(get_usr_sid())
    

    这段代码中,GetUserNameEx函数用于获取当前用户的详细名称信息,然后通过OpenProcessTokenGetTokenInformation函数组合使用,从当前进程的安全令牌中提取出用户SID。最后,ConvertSidToStringSid将SID转换成字符串形式,便于输出和处理。

    注意:这段代码在Windows环境下运行有效,且需要有适当权限执行。如果在没有管理员权限的环境中运行,可能需要调整代码以适应不同权限级别的需求。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(1条)

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 7月30日
  • 已采纳回答 7月30日
  • 创建了问题 6月10日

悬赏问题

  • ¥15 egg异步请求返回404的问题
  • ¥20 Ti毫米波雷达板同步
  • ¥15 安装了kali后用VM打开,没有鼠标且无法控制怎么办啊
  • ¥15 关于#python#的问题:无功优化问题数学建模要以3机9节点为算例编写一个以最小有功网损为目标的无功优化问题,想要了解清楚其中数学建模的具体公式进行学习
  • ¥15 mvc采用element分页的问题
  • ¥15 proteus怎样构建他励直流发电机模型?
  • ¥15 求制作PPT有偿,帮
  • ¥20 显示在此环境中不可导入Django
  • ¥15 关于#前端#的问题:选中后合计金额没变化,另外想要传递minsuId值到下一个页面会报错(语言-javascript)
  • ¥15 cesium双面渲染