Con l'aiuto di alcuni pezzi di codice trovati in giro avevo sviluppato una classe apposita in C# che si interfacciava ad alcune DLL di sistema:
Compilando la classe (se c'è qualche buon'anima che la traduce in VB...) puoi utilizzare il metodo Login in questo modo:codice:using System; using System.Web; using System.IO; using System.ComponentModel; using System.Diagnostics; using System.Drawing.Printing; using System.Security.Principal; using System.Runtime.InteropServices; public class NetLogon { public static bool Login(string domain, string username, string password) { bool r = false; IntPtr token; bool result = LogonUser( username, domain, password, LogonTypes.Interactive, LogonProviders.Default, out token ); if (result) { ImpersonateLoggedOnUser(token); CloseHandle(token); r = true; } return r; } [DllImport("advapi32.dll", SetLastError = true)] static extern bool LogonUser( string principal, string authority, string password, LogonTypes logonType, LogonProviders logonProvider, out IntPtr token); [DllImport("advapi32.dll", SetLastError = true)] static extern bool ImpersonateLoggedOnUser(IntPtr handle); [DllImport("kernel32.dll", SetLastError = true)] static extern bool CloseHandle(IntPtr handle); enum LogonTypes : uint { Interactive = 2, Network, Batch, Service, NetworkCleartext = 8, NewCredentials } enum LogonProviders : uint { Default = 0, WinNT35, WinNT40, WinNT50 } }
Fammi sapere se funzicacodice:if ( NetLogon.Login("DOMINIO", "Pippo", "Pluto") ) { .... // si è loggato in rete, ora faccio quel che devo fare }
Ps. così dovrebbe funzionare solo utilizzando pagine ASPX, per applicazioni è necessario fare alcune mod.


Rispondi quotando