Iniciar Internet Explorer con otro usuario
12.410 views
Para una nueva funcionalidad en la empresa, necesitamos acceder a una página web para identificarnos y hacer las gestiones.
Como algunos usuarios no tienen ordenador asignado, pero deben acceder puntualmente a la aplicación, lo hacen desde un ordenador «comodín».
La aplicación toma las credenciales de Internet Explorer (estamos en un dominio Windows 2003).
Así, para poder acceder con su usuario, se debe cerrar la sesión actual e iniciar de nuevo con el usuario correspondiente.
Para evitar esta pérdida de tiempo y para que no tengan que ejecutar Internet Explorer con el comando «Ejecutar como…«, he creado esta pequeña aplicación, que nos puede servir para iniciar cualquier otra aplicación con otras credenciales.
Para probarla, tan necesitamos crear en Visual Studio un formulario con dos textbox:
- txtUsuario
- txtPassword
Necesitamos también un botón:
- Button1
El código sería el siguiente:
Imports System.Environment Imports System.Security Imports System.IO Public Class Form1 'ruta completa del ejecutable Private iexplore As String = GetFolderPath(SpecialFolder.ProgramFiles) & "\Internet Explorer\iexplore.exe" 'ruta del directorio que contiene el ejecutable Private iexploreFolder As String = GetFolderPath(SpecialFolder.ProgramFiles) & "\Internet Explorer" 'url que queremos abrir con las credenciales proporcionadas Private url As String = "http://url.de/nuestra_aplicacion" Private domain As String = "dominio" 'función para pasar el password a SecureString Private Function ConvertToSecureString(ByVal str As String) Dim password As New SecureString For Each c As Char In str.ToCharArray password.AppendChar(c) Next Return password End Function 'código que se ejecuta al hacer click en el botón Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim psinfo As New ProcessStartInfo 'variable para saber si hemos tenido algún error Dim er As Boolean = False 'si no han puesto usuario, no hacemos nada If Me.txtUsuario.Text <> "" Then Cursor = Cursors.WaitCursor Try 'asignamos los argumentos a ProcessInfo psinfo.FileName = Chr(34) & iexplore & Chr(34) psinfo.WorkingDirectory = iexploreFolder psinfo.Arguments = url psinfo.Domain = domain psinfo.UserName = Me.txtUsuario.Text psinfo.Password = ConvertToSecureString(Me.txtPassword.Text) psinfo.UseShellExecute = False psinfo.LoadUserProfile = False 'iniciamos el proceso Process.Start(psinfo) Catch ex As Exception MsgBox(ex.Message, MsgBoxStyle.Critical + vbOKOnly, "Error") er = True Finally Cursor = Cursors.Default If Not er Then 'cerramos el formulario si todo ha ido bien Me.Close() End If End Try End If End Sub End Class
Es cierto que también podemos hacer un .bat con el comando «runas», pero así evitamos que los usuarios se puedan equivocar fácilmente (y también queda más bonito).
Además, al ser una aplicación creada con Visual Studio, podemos instalarla en los PC’s necesarios y hacer que se actualice fácilmente con ClickOnce y añadir más funcionalidades.
Gracias, venia usando el runas, pero esto es mas comodo.
Dejo el runas mio:
%windir%\system32\runas.exe /user:dominio\usuario»C:\Program Files\Internet Explorer\IEXPLORE.EXE»
Saludos,
Lucas.
ok, me alegro que te sirva.
Gracias por tu comentario.
Sigue funcionando en Windows 7 y Windows 8, Windows 10 ?
En Windows 7 seguro, y supongo que en Windows 8 y 10 también.