none
Ejecutar como administrador RRS feed

  • Pregunta

  • Buena tarde, tengo el siguiente código:

    Dim Servicio As ServiceController = New ServiceController(strServ)
            If ((Servicio.Status.Equals(ServiceControllerStatus.Stopped)) Or
                (Servicio.Status.Equals(ServiceControllerStatus.StopPending))) Then
                oClases.Bitacora("Det", R_Path, ConsPro, "Servicio se encontraba detenido")
                Servicio.Start()
                oClases.Bitacora("Det", R_Path, ConsPro, "Servicio: " & strServ & " activo")
            Else
                oClases.Bitacora("Det", R_Path, ConsPro, "Servicio en ejecución")
            End If
            Servicio.Dispose()

    El cual valida si un servicio se encuentra detenido, en caso de que lo esté, lo inicia.

    El problema, es que al ejecutar el programa, no lo hace, ya que necesita ejecutar como Administrador, he cambiado en las propiedades para que ejecute como tal, pero, pide confirmación para ello.  Alguna sugerencia?

    Espero haberme dado a explicar correctamente.

    Agradezco de antemano sus atenciones.

    Saludos


    Ángel López Mondragón

    jueves, 14 de marzo de 2019 20:38

Todas las respuestas

  • No es problema de la aplicación sino del propio Windows. Si tienes el sistema operativo configurado para que solicite confirmación cuando un programa requiere elevación, pues entonces Windows presenta ese mansaje antes de ejecutar el programa. Por lo tanto el programa no tiene ocasión de hacer nada para evitarlo.

    No tiene ninguna solución sencilla si quieres que funcione en cualquier Windows sin tener que reconfigurar el propio Windows. Cuando se necesita rodar código privilegiado sin pedir autorización, se implementa un Servicio de Windows y se instala de forma que ruede con los privilegios necesarios. Y luego la aplicación que se ejecuta en el escritorio lo que hace es usar comunicación inter-procesos para pedirle a ese servicio que ejecute el código que deba rodar con privilegios elevados. Pero claro, para que esto funcione se necesita que el servicio esté iniciado. Si tu problema es precisamente iniciar un servicio, pues entonces estarías simplemente trasladando el problema de un servicio a otro, cosa que puede que sea o no sea útil dependiendo de las causas por las que se detiene el otro servicio.

    jueves, 14 de marzo de 2019 21:07
  • Gracias por la respuesta.

    Saludos


    Ángel López Mondragón

    jueves, 14 de marzo de 2019 23:10