Problemas para ejecutar bat o power shell desde visual estudio 2017 con vb.net

Iniciado por crisoof, 15 Enero 2020, 19:32 PM

0 Miembros y 1 Visitante están viendo este tema.

crisoof

Buenas tardes comunidad!,

nuevamente recurro a ustedes al encontrarme en un callejón sin salida, e investigado un monton y no me a resultado nada de lo que he intentado, les comento.

Estoy generando el timbre electronico de una guia de despacho, para esto genero unas instrucciones en cmd.exe, al generalas desde el cmd no tengo problemas, cuando lo hago desde visual studio me genera problemas, no me muestra errores solo indica que el archivo no se encuentra siendo que la instrucción que crea el archivo se ejecuto o al menos no aparecen errores que me indiquen que no se creo el archivo, aunque este no se crea.
He intentado de hacerlo con power shell ise 2.0 pero no tengo forma alguna de ejecutarlo desde visual studio, no tengo idea de como ejecutar el powershell, por temas de elevación de permisos solucione el problema llamando a un powershell normal sin elevación y este ejecuta un nuevo powershell con permisos elevados, si me pueden ayudar con cualquiera de estas 2 formas se los agradecería muchísimo

ya sea ayudarme y quitando la nebulosa de como ejecutar un script power shell desde visual studio 2017 o ayudándome a saber como elevar permisos desde un bat, sin que se tenga que hacer el acceso directo e indicarle al acceso directo que se ejecute en modo administrador.

Muchas gracias por su ayuda de antemano
Saludos

RoyMata

La manera mas sencilla seria ejecutar un proceso que llame a un archivo por lotes (bat) con privilegios de administrador.
Para ello, crea tu archivo bat. Si vas a las Propiedades de ese archivo veras que la opcion Ejecutar como Administrador se encuentra deshabilitada, para solucionarlo, haces clic derecho sobre el bat y seleccionas la opcion Crear acceso directo. Clic derecho sobre el acceso directo recien creado, seleccionas Propiedades, en la pestaña Acceso directo, clic en Opciones avanzadas y marcas la opcion Ejecutar como Administrador.
Luego simplemente desde C# o VB creas un new Process y ejecutas el acceso directo.

ThunderCls

Hola

1- Mi recomendacion es migrar todo tu codigo shell a .NET y tener un ejecutable que haga todo el trabajo en cuyo caso no necesitarias estar llamando lineas de comandos, de lo contrario no creo que necesites .NET para nada y deberias ejecutar tu script directamente.
2- Sin ver codigo es mas complicado indicarte donde estas cometiendo el error
3- Para ejecutar PowerShell desde tu aplicacion en .NET puedes seguir estas guias
https://blogs.msdn.microsoft.com/kebab/2014/04/28/executing-powershell-scripts-from-c/
https://docs.microsoft.com/en-us/powershell/scripting/developer/hosting/adding-and-invoking-commands?view=powershell-7
https://duanenewman.net/blog/post/running-powershell-scripts-from-csharp/
4- Por defecto, los procesos de Windows heredarán su contexto de seguridad del padre a no ser que se especifique lo contrario. En este caso si tu aplicacion es lanzada con privilegios elevados, los procesos hijos (cmd.exe, powershell.exe) tendran los mismos privilegios que el padre.
https://docs.microsoft.com/en-us/windows/win32/procthread/process-security-and-access-rights?redirectedfrom=MSDN
-[ "...I can only show you the door. You're the one that has to walk through it." – Morpheus (The Matrix) ]-
http://reversec0de.wordpress.com
https://github.com/ThunderCls/