Импорт ctypes.windll.shell32.IsUserAnAdmin дает ImportError

Действительно глупый вопрос здесь, извините - это мой первый день в Python.

Я хочу импортировать функцию IsUserAnAdmin следующим образом:

from ctypes.windll.shell32 import IsUserAnAdmin

Я явно делаю что-то не так, потому что получаю:

ImportError: нет модуля с именем 'ctypes.windll'

Все отлично работает, когда я импортирую весь "ctypes", но я не хочу этого делать, так как я бы скорее вызвал функцию с помощью:

IsUserAnAdmin() 

... чем:

ctypes.windll.shell32.IsUserAnAdmin()

Может кто-нибудь сказать мне, как я должен импортировать эту функцию, чтобы сделать это?

Заранее спасибо:)

1 ответ

Решение

windll это LibraryLoader объект не module, Если вы прочитаете документы, вы заметите, что импорт был выполнен как:

>>> from ctypes import *
>>> print windll.Shell32.IsUserAnAdmin()
0

windll = LibraryLoader(WinDLL) где WinDLL это класс, чей документ гласит:

Этот класс представляет функции экспорта dll с использованием соглашения о вызовах Windows stdcall.

Так что вы можете сделать:

>>> IsUserAnAdmin = WinDLL('Shell32').IsUserAnAdmin
>>> IsUserAnAdmin()
0
Другие вопросы по тегам