直截了當,我一直在尋找一種在Python中使用Windows LogonUser
函數的方法。在Python中使用/爲LogonUser函數創建一個等價物
看過使用C的朋友使用這個函數,我想用Python來嘗試類似的過程。有沒有辦法?或者我是否需要嘗試在C中創建腳本的那部分,然後以某種方式讓我的Python腳本調用它?
直截了當,我一直在尋找一種在Python中使用Windows LogonUser
函數的方法。在Python中使用/爲LogonUser函數創建一個等價物
看過使用C的朋友使用這個函數,我想用Python來嘗試類似的過程。有沒有辦法?或者我是否需要嘗試在C中創建腳本的那部分,然後以某種方式讓我的Python腳本調用它?
您可以直接調用使用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.
如果你在Linux上工作,那麼粗略等同於Windows的LogonUser
function是peercred
,爲SO_PEERCRED
。 (感謝Grawity超級用戶peercred)。
你在哪個平臺上?你在使用Windows(操作系統提供它)嗎?或者你在Linux上工作(哪裏有你想要的東西)? – jww 2016-04-02 11:34:09