Ejecutar como un usuario diferente al depurar en Visual Studio

80

Estoy intentando ejecutar el programa que estoy depurando como un usuario diferente. Ahora, esto se puede hacer ejecutando el exe y adjuntando desde Visual Studio, pero esto es engorroso.

Lo que he intentado hacer es usar el comando "RunAs":

command.com /C runas /env /user:OtherUser DebugTarget.Exe 

Pero esto está adjunto a command.com, Visual Studio quiere un exe. Ahora puedo crear una aplicación ficticia ... ¿pero alguien tiene una mejor solución para esto?

moogs
fuente
ESO ES BRILLANTE. Ahora me siento tan estúpido porque utilizo cmd.exe para probar esto. Ugh.
moogs

Respuestas:

81

Como se mencionó en tener la aplicación de ejecución del depurador como un usuario diferente (vinculado anteriormente), otra forma extremadamente simple de hacer esto que no requiere más herramientas:

  • Mantenga Shiftpresionado + clic derecho para abrir una nueva instancia de Visual Studio.
  • Haga clic en "Ejecutar como usuario diferente"

    Ejecutar como usuario diferente

  • Ingrese las credenciales del otro usuario en la siguiente ventana emergente

  • Abra la misma solución con la que está trabajando

Ahora, cuando depure la solución, será con los permisos del otro usuario.

Sugerencia : si va a ejecutar varias instancias de Visual Studio, cambie el tema (como "oscuro") para que pueda realizar un seguimiento de cuál es cuál fácilmente).

Watki02
fuente
Esta es, con mucho, la mejor solución aquí. Funciona muy bien. El único problema es que si no puede acceder a TFS o cualquiera de sus complementos pagados (como R #). Resolví esto simplemente volviendo a abrir la solución normalmente (en mi cuenta).
gregsdennis
No hay nada de malo en abrir la misma solución de dos usuarios diferentes como sugiere esta respuesta. Puede tenerlos abiertos uno al lado del otro, por lo que sugerí cambiar su tema VS por uno de ellos.
Watki02
2
Usé este método durante años hasta Visual Studio 2015. Esta versión de VS no me permite iniciar sesión para obtener una clave MSDN cuando se ejecuta como un usuario diferente, por lo que simplemente se cierra. ¿Alguna solución para eso?
NTDLS
2
Desafortunadamente, ejecutar VS como otro usuario no funciona bien cuando la solución está bajo control de código fuente.
RichardD
1
Tiene el problema de tener que esperar a que VS se prepare para el primer uso si el usuario de prueba no lo ha usado previamente. Pero por lo demás, parece funcionar de maravilla para VS2013.
Kelly Bang
29

Esto funciona (me siento tan idiota):

C:\Windows\System32\cmd.exe /C runas /savecred /user:OtherUser DebugTarget.Exe

El comando anterior le pedirá su contraseña cada vez, por lo que para menos frustración, puede usar / savecred. Solo te preguntan una vez. (pero creo que solo funciona para Home Edition y Starter)

moogs
fuente
2
¿Cómo se hace esto en Visual Studio? ¿Abre la solución, compila y de alguna manera ejecuta el comando anterior desde Visual Studio? Yo uso VS2008.
Programador de Wallstreet
4
Entendido, consulte social.msdn.microsoft.com/Forums/en/vsdebug/thread/…
Wallstreet Programmer
Este método tiene la desventaja de que no alcanzará ningún punto de interrupción en su código.
Lews Therin
@LewsTherin Una vez que el proyecto comienza a ejecutarse, debe ir a Depurar -> Adjuntar al proceso para adjuntar el depurador VS a su programa. No es ideal, pero parece ser todo lo que tenemos.
Gabriel Luci
2
@GabrielLuci Eso puede perder algún código que se ejecuta antes de que puedas acceder a ese menú. La mejor opción es agregar lo siguiente a la primera línea del punto de entrada de su código:System.Diagnostics.Debugger.Launch();
Lews Therin
20

también puede usar VSCommands 2010 para ejecutar como usuario diferente:

texto alternativo

usuario registrado
fuente
6
Debo mencionar que necesita VSCommands Pro para tener esta función habilitada. En la versión Lite (gratuita), estos comandos parecen estar disponibles, pero no sucede nada cuando se invocan. Lo probé con VS2010 Pro.
d11
Probé esto usando una aplicación de consola C #, que imprime el nombre de usuario del usuario que ejecuta la aplicación. Usar la opción de ejecutar como usuario diferente funciona bien. No sé si se ejecuta como administrador o como usuario normal ...
froeschli
@ d11 Lo probé con "VSCommands para Visual Studio 2013", y funciona como se esperaba. (Excepto que se requieren rutas completas para todo lo especificado en "Argumentos de la línea de comandos".)
Rok Strniša
1
Gran solución, esta extensión es realmente agradable y es gratuita para 2012 y 2013, agrega cosas bastante más útiles que solo esto.
Tobberoth
1
Es una pena que este proyecto ya no se mantenga.
Gabriel Luci
6

Estoy usando el siguiente método basado en la respuesta de @ Watki02:

  1. Mayús y haga clic en la aplicación para depurar
  2. Ejecutar como usuario diferente
  3. Adjunte el depurador a la aplicación

De esa manera, puede mantener su instancia de Visual Studio como su propio usuario mientras depura desde el otro.

Noelicus
fuente
2

cmd.exe se encuentra en diferentes ubicaciones en diferentes versiones de Windows. Para evitar necesitar la ubicación de cmd.exe, puede usar el comando que escribió moogs sin llamar a "cmd.exe / C".

Aquí hay un ejemplo que funcionó para mí:

  1. Abrir símbolo del sistema
  2. Cambie el directorio donde se encuentra el archivo .exe de su aplicación.
  3. Ejecute el siguiente comando: runas / usuario: dominio \ nombre de usuario Application.exe

Entonces, el paso final se verá así en el símbolo del sistema:

C:\Projects\MyProject\bin\Debug>runas /user:domain\username Application.exe

Nota : el nombre de dominio era obligatorio en mi situación.

Miguel
fuente
0

Puede abrir su símbolo del sistema como el usuario previsto:

  • Shift + clic derecho en el icono de símbolo del sistema en la barra de tareas.
  • Seleccione (Ejecutar como usuario diferente)

ingrese la descripción de la imagen aquí

  • Se le pedirá que ingrese y contraseña

  • Una vez que se inicia el símbolo del sistema, puede verificar con qué usuario está ejecutando el comando whoami.

  • Ahora puede cambiar el directorio a su proyecto y ejecutar

dotnet run

  • En Visual Studio, presione Ctrl + Alt + P (Adjuntar al proceso, también se puede encontrar en el menú Depurar)

ingrese la descripción de la imagen aquí

  • Asegúrese de que "Mostrar procesos de todos los usuarios" esté marcado.
  • Busque el proceso en ejecución y adjunte el depurador.
Saher Ahwal
fuente
-1

Estoy usando Visual Studio 2015 e intento depurar un sitio web con diferentes credenciales.

(Actualmente estoy probando un sitio web en una red de desarrollo que tiene una copia del directorio activo activo; puedo "secuestrar" cuentas de usuario para probar los permisos de forma segura)

  1. Comience a depurar con su usuario normal, asegúrese de que puede acceder a http: // localhost: 8080 como de costumbre, etc.
  2. Otorgue al otro usuario acceso de "Control total" al directorio de inicio de su usuario normal, es decir, C: \ Users \ Colin
  3. Convierta al otro usuario en administrador de su máquina. Haga clic derecho en Computadora> Administrar> Agregar otro usuario al grupo de administradores
  4. Ejecute Internet Explorer como el otro usuario (Mayús + clic derecho en Internet Explorer, Ejecutar como un usuario diferente)
  5. Vaya a la URL de su localhost en esa ventana de IE

Realmente conveniente para hacer algunas pruebas rápidas. El acceso de control total es probablemente excesivo, pero desarrollo en una red aislada. Si alguien agrega notas sobre configuraciones más específicas, con mucho gusto editaré esta publicación en el futuro.

colinccook
fuente