You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

咨询:是否存在可调用Windows本地认证系统的Python库

用于Windows本地用户名密码校验的Python库

当然有,以下是两个实用的方案:

1. pywin32库

pywin32是Python对Windows API的成熟封装,其中win32security模块可以直接调用本地认证接口。

示例代码:

import win32security

def validate_local_user(username, password):
    try:
        # 调用LogonUser进行本地认证
        handle = win32security.LogonUser(
            username,
            None,  # 本地认证,域名设为None
            password,
            win32security.LOGON32_LOGON_INTERACTIVE,
            win32security.LOGON32_PROVIDER_DEFAULT
        )
        handle.Close()
        return True
    except win32security.error:
        return False

# 使用示例
print(validate_local_user("本地用户名", "用户密码"))

2. ctypes(标准库,无需额外安装)

如果你不想安装第三方库,可以用Python标准库ctypes直接调用Windows系统的advapi32.dll中的认证函数。

示例代码:

import ctypes
from ctypes import wintypes

# 加载advapi32.dll
advapi32 = ctypes.WinDLL('advapi32', use_last_error=True)

# 定义函数参数和返回值类型
advapi32.LogonUserW.argtypes = (
    wintypes.LPCWSTR,  # 用户名
    wintypes.LPCWSTR,  # 域名(本地认证为None)
    wintypes.LPCWSTR,  # 密码
    wintypes.DWORD,    # 登录类型
    wintypes.DWORD,    # 登录提供者
    wintypes.PHANDLE   # 返回的令牌句柄
)
advapi32.LogonUserW.restype = wintypes.BOOL

def validate_local_user(username, password):
    token_handle = wintypes.HANDLE(0)
    result = advapi32.LogonUserW(
        username,
        None,
        password,
        2,  # LOGON32_LOGON_INTERACTIVE
        0,  # LOGON32_PROVIDER_DEFAULT
        ctypes.byref(token_handle)
    )
    if result:
        # 关闭令牌句柄
        ctypes.windll.kernel32.CloseHandle(token_handle)
        return True
    return False

# 使用示例
print(validate_local_user("本地用户名", "用户密码"))

注意事项:

  • 运行这些代码需要足够的系统权限,通常普通用户权限即可,但某些场景下可能需要管理员权限。
  • LOGON32_LOGON_INTERACTIVE是交互式登录类型,你也可以根据需求换成其他类型(比如LOGON32_LOGON_NETWORK)。

内容的提问来源于stack exchange,提问作者John_Trump

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 04:20:17