直截了当,我一直在寻找在Python中使用Windows LogonUser
函数的方法。
看过朋友使用C这个函数的用法,我想用Python尝试一个类似的过程。有办法吗?或者我是否需要尝试在C中制作该部分脚本然后以某种方式让我的Python脚本调用它?
答案 0 :(得分:0)
您可以使用ctypes
直接调用Windows API:
import ctypes
import ctypes.wintypes
# create variable that will be filled with a token that represents the user
token = ctypes.wintypes.HANDLE()
# 3 is LOGON32_LOGON_NETWORK, 0 is LOGON32_PROVIDER_DEFAULT
if ctypes.windll.advapi32.LogonUserW(u"username", u"domain", u"password", 3, 0, ctypes.byref(token)) == 0:
# failed to login if we get 0
failed_to_login()
# close the handle to avoid leaking it
ctypes.windll.kernel32.CloseHandle(token)
您也可以在找不到错误代码后调用ctypes.windll.kernel32.GetLastError()
,您可以在命令提示符中通过net helpmsg nnnn
查找错误代码。
C:\>net helpmsg 1326
Logon failure: unknown user name or bad password.
答案 1 :(得分:0)
如果您正在使用Linux,那么粗略等同于Windows' LogonUser
function为peercred
,与SO_PEERCRED
相同。 (感谢Grawity on Super User peercred)。