none
Ejecutar .bat desde c# con credenciales de Administrador RRS feed

  • Pregunta

  • Buen día.

    Alguna forma de ejecutar un archivo bat, desde c# con credenciales de Administrador, en una sesión de usuario estandar sin tener que poner la contraseña de administrador. Lo que hace el archivo bat es cambiar la ip a estatica o activar el dhcp cuando se necesite. Gracias

    martes, 21 de mayo de 2019 23:06

Respuestas

  • Hola Josue_Rivera, se me ocurre incluir en tu archivo .bat la instrucción runas para ejecutar como el usuario administrador, que si bien seria inseguro porque tendrías que incluir el password y el nombre de usuario 

    Quizá quieras incluir el pass en el código en C# y mandarlo al bat o en su defecto solicitarlo al usuario, posterior escribir el .bat o usar Powershell

    https://docs.microsoft.com/en-us/previous-versions/windows/it-pro/windows-server-2012-R2-and-2012/cc771525(v=ws.11)

     

    runas [{/profile | /noprofile}] [/env] [{/netonly |
    /savecred}] [/smartcard] [/showtrustlevels] [/trustlevel]
    /user:<UserAccountName> "<ProgramName>
    <PathToProgramFile>"

     

    No dude en ampliar más sobre este tema si es que aún lo requiriera o de abrir una nueva consulta en caso de tener alguna otra situación o de necesitarla con algún otro de los productos de Microsoft.

     

    Adicional le invito a consultar los siguientes recursos:

    Guía para formular preguntas en el foro

    Channel 9 - donde puedes encontrar una sección de: Scripting en PowerShell

     

    Gracias por usar los foros de MSDN.

    Erick Rivera

     ____

     

    Por favor recuerde "Marcar como respuesta" las respuestas que hayan resuelto su problema, es una forma común de reconocer a aquellos que han ayudado, y hace que sea más fácil para los otros visitantes encontrar la solución más tarde.  

    Microsoft ofrece este servicio de forma gratuita, con la finalidad de ayudar a los usuarios y la ampliación de la base de datos de    conocimientos relacionados con los productos y tecnologías de Microsoft.   

    Este contenido es proporcionado "tal cual" y no implica ninguna responsabilidad de parte de Microsoft.

    miércoles, 22 de mayo de 2019 15:49

Todas las respuestas

  • No, desde el propio programa no hay manera de hacerlo sin conocer la contraseña del administrador. Imagínate el espantoso problema de seguridad que se ocasionaría si un programa cualquiera ejecutado por un usuario normal pudiese ejecutar cosas con permisos de administrador dentro de un equipo.

    Sí que se podría hacer dejando "embebida" la contraseña dentro del programa, sin que el usuario la conozca. Pero evidentemente esto tiene sus propios problemas, empezando con que no es seguro y continuando con el problema de sustituir la contraseña cada vez que cambie.

    Una solución alternativa es la de instalar un Servicio Windows configurado para ejecutarse con credenciales administrativas (obviamente se necesita que la instalación la haga alguien con permisos suficientes) y una vez que el servicio está instalado en la máquina, tu programa usa comunicación inter-procesos para enviarle al Servicio un comando pidiéndole que cambie la IP o active el DHCP.

    miércoles, 22 de mayo de 2019 6:34
    Moderador
  • Hola Josue_Rivera, se me ocurre incluir en tu archivo .bat la instrucción runas para ejecutar como el usuario administrador, que si bien seria inseguro porque tendrías que incluir el password y el nombre de usuario 

    Quizá quieras incluir el pass en el código en C# y mandarlo al bat o en su defecto solicitarlo al usuario, posterior escribir el .bat o usar Powershell

    https://docs.microsoft.com/en-us/previous-versions/windows/it-pro/windows-server-2012-R2-and-2012/cc771525(v=ws.11)

     

    runas [{/profile | /noprofile}] [/env] [{/netonly |
    /savecred}] [/smartcard] [/showtrustlevels] [/trustlevel]
    /user:<UserAccountName> "<ProgramName>
    <PathToProgramFile>"

     

    No dude en ampliar más sobre este tema si es que aún lo requiriera o de abrir una nueva consulta en caso de tener alguna otra situación o de necesitarla con algún otro de los productos de Microsoft.

     

    Adicional le invito a consultar los siguientes recursos:

    Guía para formular preguntas en el foro

    Channel 9 - donde puedes encontrar una sección de: Scripting en PowerShell

     

    Gracias por usar los foros de MSDN.

    Erick Rivera

     ____

     

    Por favor recuerde "Marcar como respuesta" las respuestas que hayan resuelto su problema, es una forma común de reconocer a aquellos que han ayudado, y hace que sea más fácil para los otros visitantes encontrar la solución más tarde.  

    Microsoft ofrece este servicio de forma gratuita, con la finalidad de ayudar a los usuarios y la ampliación de la base de datos de    conocimientos relacionados con los productos y tecnologías de Microsoft.   

    Este contenido es proporcionado "tal cual" y no implica ninguna responsabilidad de parte de Microsoft.

    miércoles, 22 de mayo de 2019 15:49