1

直截了当,我一直在寻找一种LogonUser在 Python 中使用 Windows 函数的方法。

看到朋友使用 C 使用此函数后,我想尝试使用 Python 进行类似的过程。有办法吗?还是我需要尝试在 C 中创建该部分脚本,然后以某种方式让我的 Python 脚本调用它?

4

2 回答 2

1

您可以使用以下命令直接调用 Windows API ctypes

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.
于 2013-06-07T19:41:07.550 回答
0

如果您在 Linux 上工作,那么大致相当于 Windows 的LogonUser功能peercred,如SO_PEERCRED. (感谢超级用户 peercred 上的Grawity)。

于 2016-04-02T11:44:59.550 回答