Como chamar o Wine DLL da Python no Linux?
Pergunta
Estou escrevendo um script python no Linux e preciso chamar algumas funções do Windows disponíveis no vinho. Especificamente, AllocateAndInitializeSid
e LookupAccountSidW
, para determinar quem está conectado a um computador Windows remoto. Essas funções fazem parte de advapi32.dll no vinho (editar: Usando as respostas, pude chamar a função, mas o LookUpAccountSIDW só funciona no computador local).
Como posso acessar essas funções ou uma DLL de vinho em geral? eu tentei
>>> cdll.LoadLibrary("~/.wine/drive_c/windows/system32/advapi32.dll")
Mas isso resulta em um erro:
OSError: ~/.wine/drive_c/windows/system32/advapi32.dll: invalid ELF header
Existe outro ctypes
função que funcionaria, ou alguma interface de vinho que eu poderia usar?
Solução
O vinho não fornece *.so
versões das DLLs? Eu pareço ter /usr/lib32/wine/advapi32.dll.so
, por exemplo.
Se você estiver em uma máquina de 64 bits, lembre-se de que precisará de uma versão de 32 bits do Python para carregar bibliotecas de 32 bits.
Outras dicas
Entenda que .Dll é o formato usado pelo Windows.
No Linux, essas bibliotecas terminam com .ASSIM
Você não pode usar uma biblioteca compilada para uma plataforma na outra. Não é compatível.