none
Permisos de Administrador RRS feed

  • Pregunta

  • Saludos Amigos,

    He creado una pequeña app que actualiza unos aplicativos de la empresa, pero el tema es que estas PC tienen usuarios de dominio o simplemente son usuarios estándar.

    Cómo puedo hacer para que mi APP tenga permisos para ejecutar cualquier acción como Administrador, escribir logs, eliminar archivos de la carpeta C:\UpdaterNet\}

    Gracias por su ayuda


    Néstor Dávila Muñoz

    jueves, 5 de abril de 2018 21:32

Respuestas

  • Ah, entonces lo que necesitas es que la aplicacion impersone al administrador usando su clave (que esta encriptada en el interior). Esto es bastante mas complicado de hacer que lo del manifest, ya que requiere un par de docenas de lineas de codigo, pero afortunadamente se puede copiar y pegar desde este articulo:

    https://msdn.microsoft.com/en-us/library/w070t6ka(v=vs.110).aspx

    Por cierto, aunque esto es bastante mejor que meter la password en un .bat, sigue sin ser completamente seguro. La razon es que aunque la password vaya encriptada en la aplicacion, el codigo necesario para desencriptarla tiene que existir dentro de la aplicacion (de lo contrario la aplicacion no podria usar la password), y por lo tanto haciendo ingenieria inversa de la aplicacion se podria recuperar la clave.


    viernes, 6 de abril de 2018 15:18
    Moderador

Todas las respuestas

  • Para que la app adquiera permisos de administrador, desde el proyecto en Visual Studio agrega un archivo de manifiesto (app.manifest). Después de agregarlo, abre el app.manifest y verás que la plantilla predeterminada crea una entrada que se llama requestedExecutionLevel, y admite varios valores que están entre comentarios. El valor que necesitas es requireAdministrator. En las propiedades del proyecto, asegúrate de que está seleccionado el app.manifest como archivo de manifiesto (debería estarlo de forma predeterminada porque Visual Studio ya lo configura cuando lo agregas al proyecto).

    Después compilas, y al ejecutar la aplicación en caso de que el usuario que la ejecuta no sea administrador se abre una ventanita de Windows solicitando la elevación de privilegios.

    Obviamente, en la ventana hay que introducir unas credenciales adecuadas con la correspondiente contraseña; si se pudieran adquirir privilegios de administrador sin saber la contraseña lógicamente el sistema de seguridad de Window no valdría para nada.

    viernes, 6 de abril de 2018 6:47
    Moderador
  • hola

    podrias definir el manifest en la aplicacion para que ejecute como admin local

    Start Application With Administrative Rights on Windows

    revisa el articulo alli explica como crearlo

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    viernes, 6 de abril de 2018 13:42
  • Saludos, Gracias por la respuesta a los dos.

    El tema es que la clave de administrador está expuesta en el bat, por eso mismo se está creando esta pequeña app que tiene encriptada la clave de administrador.

    Adicional a esto es que mi escenario más bajo es de 300 pc en distintos puntos de venta, como que ingresar una clave para que se actualicen los demás aplicativos es como complicado y tedioso ir pc por pc poniendo la clave.

    Por eso mi pregunta iba a que la APP por debajo seejecute como administrador y en el config poner esas credenciales y se ejecute con eso.


    Néstor Dávila Muñoz

    viernes, 6 de abril de 2018 14:32
  • Ah, entonces lo que necesitas es que la aplicacion impersone al administrador usando su clave (que esta encriptada en el interior). Esto es bastante mas complicado de hacer que lo del manifest, ya que requiere un par de docenas de lineas de codigo, pero afortunadamente se puede copiar y pegar desde este articulo:

    https://msdn.microsoft.com/en-us/library/w070t6ka(v=vs.110).aspx

    Por cierto, aunque esto es bastante mejor que meter la password en un .bat, sigue sin ser completamente seguro. La razon es que aunque la password vaya encriptada en la aplicacion, el codigo necesario para desencriptarla tiene que existir dentro de la aplicacion (de lo contrario la aplicacion no podria usar la password), y por lo tanto haciendo ingenieria inversa de la aplicacion se podria recuperar la clave.


    viernes, 6 de abril de 2018 15:18
    Moderador
  • *y por lo tanto haciendo ingenieria inversa de la aplicacion se podria recuperar la clave*

    Tienes toda la razón, pero se obfuscará ese código, adicional es que en el bat los usuarios lo editaban e instalaban apps con esa clave y eso es lo que se quiere evitar.

    Gracias por tus aportes.


    Néstor Dávila Muñoz

    viernes, 6 de abril de 2018 15:29
  • Podrías ayudarme con ese código?

    Estoy usándolo pero me sigue dando errores de escritura en disco :(


    Néstor Dávila Muñoz

    viernes, 6 de abril de 2018 16:33