¿Cómo solicita un programa privilegios de administrador?
-
01-07-2019 - |
Pregunta
Estoy trabajando en una pequeña aplicación en VB.NET.El programa necesita privilegios de administrador para realizar algunas tareas.¿Hay alguna forma de solicitar privilegios de administrador durante la ejecución del programa?
¿Cuál es la forma general de cambiar la cuenta de usuario bajo la cual se ejecuta la aplicación?
Solución
Existen varios métodos según sus necesidades.Algunos detalles se dan en los requisitos del desarrollador de aplicaciones para UAC.
- Incluya un manifiesto UAC que haga que su programa requiera privilegios de administrador al inicio.
- Utilice uno de los métodos sugeridos para invocar una elevación para quedarse sin proceso.Uno de los mejores es usar el apodo de elevación COM y
CoCreateInstanceAsAdmin
para llamar a métodos en un objeto COM que se ejecuta como administrador.Posiblemente sea complicado conseguir que funcione en VB.Net.Aunque lo hice funcionar bien en C++. - Otro método correcto es aislar las partes de su código que necesitan privilegios de administrador en una aplicación que use un manifiesto UAC para requerir privilegios de administrador.En ese caso, no es necesario que su aplicación principal se ejecute como administrador.Cuando necesite privilegios de administrador, deberá invocar la aplicación externa.
Otros consejos
Puede especificar esto en el archivo de manifiesto de su aplicación.
Verificar este enlace y este enlace y este enlace también.
Try
Dim procInfo As New ProcessStartInfo()
procInfo.UseShellExecute = True
procInfo.FileName = 'Filename here
procInfo.WorkingDirectory = ""
procInfo.Verb = "runas"
Process.Start(procInfo)
Catch ex As Exception
MsgBox(ex.Message.ToString(), vbCritical)
End Try
End If
La forma más sencilla de hacerlo es hacer clic en la pestaña Proyecto -> Agregar formulario de Windows -> archivo .XML -> asígnele un nombre (nombre del programa).manifest -> pegue este código en este enlace en él (gracias JDOConal) -> luego haga clic derecho en el nombre de su proyecto en el cuadro del explorador de soluciones a la derecha y presione propiedades -> en la primera pestaña seleccione manifiesto y luego el archivo .manifest que creó -> compilar = ¡listo!