Salute a tutti.
Su Windows, da uno script che ho creato, avrei bisogno di impersonare temporanemanete un utente di sistema per poter effettuare un accesso al filesystem in maniera esclusiva.
A tale scopo ho utilizzato con successo l'API LogonUser:
http://msdn2.microsoft.com/en-us/library/aa378184(VS.85).aspx
...che non mi ha dato alcun tipo di problema con le utenze "normali" ma che non ne vuole sapere di funzionare con l'utente Guest di cui ho bisogno per poter gestire una problematica un po' particolare che non vado a descrivere.
Qualcuno ha idea di come Windows gestisca tale tipo di utenza?
Apparentemente Guest mi pare essere un normale utente come gli altri con la differenza non ha alcuna password setta di default ma evidentemente c'è qualcosa di più.
Le risorse che ho trovato con google mi sembrano abbastanza scarse.
Se può essere utile incollo la parte di codice (Python) che ho buttato giu fino ad ora e che - ripeto - funziona per le utenze "normali" ma non per l'utente Guest.
codice:
import os
import win32security, win32net, win32con, win32api, win32profile, pywintypes
class WinNtAuthorizer:
def impersonate_user(self, username, password):
handler = win32security.LogonUser(username, None, password,
win32con.LOGON32_LOGON_INTERACTIVE,
win32con.LOGON32_PROVIDER_DEFAULT)
win32security.ImpersonateLoggedOnUser(handler)
def terminate_impersonation(self):
win32security.RevertToSelf()
if __name__ == "__main__":
authorizer = WinNtAuthorizer()
print win32api.GetUserName()
authorizer.impersonate_user('user', '12345')
print win32api.GetUserName()
Ringraziamenti anticipati.