RunAs Ein anderer Benutzer beim Debuggen in Visual Studio

80

Ich versuche, das Programm, das ich debugge, als anderer Benutzer auszuführen. Dies kann jetzt durch Ausführen der Exe und Anhängen von Visual Studio aus erfolgen, dies ist jedoch umständlich.

Ich habe versucht, den Befehl "RunAs" zu verwenden:

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

Dies ist jedoch an command.com angehängt. Visual Studio möchte eine Exe. Jetzt kann ich eine Dummy-App erstellen ... aber hat jemand eine bessere Lösung dafür?

Moogs
quelle
Das ist brillant. Ich fühle mich jetzt so dumm, dass ich gerade cmd.exe benutze, um dies zu testen. Pfui.
Moogs

Antworten:

81

Wie in Debugger-Anwendung als anderer Benutzer ausführen lassen (siehe oben), ist eine weitere äußerst einfache Möglichkeit, dies zu tun, für die keine weiteren Tools erforderlich sind:

  • Halten Sie die Shiftrechte Maustaste gedrückt, um eine neue Instanz von Visual Studio zu öffnen.
  • Klicken Sie auf "Als anderer Benutzer ausführen".

    Als anderer Benutzer ausführen

  • Geben Sie im nächsten Popup-Fenster die Anmeldeinformationen des anderen Benutzers ein

  • Öffnen Sie dieselbe Lösung, mit der Sie arbeiten

Wenn Sie nun die Lösung debuggen, erfolgt dies mit den Berechtigungen des anderen Benutzers.

Tipp : Wenn Sie mehrere Instanzen von Visual Studio ausführen möchten, ändern Sie das Thema (z. B. "dunkel"), damit Sie leicht verfolgen können, welche davon welche ist.

Watki02
quelle
Dies ist bei weitem die beste Lösung hier. Funktioniert sehr gut. Das einzige Problem ist, dass Sie nicht auf TFS oder eines Ihrer kostenpflichtigen Add-Ons (wie R #) zugreifen können. Ich habe dies umgangen, indem ich die Lösung einfach wieder normal geöffnet habe (unter meinem Konto).
Gregsdennis
Es ist nichts Falsches daran, dieselbe Lösung von zwei verschiedenen Benutzern zu öffnen, wie diese Antwort nahelegt. Sie können sie nebeneinander öffnen, weshalb ich vorgeschlagen habe, Ihr VS-Thema für eines von ihnen zu wechseln.
Watki02
2
Ich habe diese Methode jahrelang bis Visual Studio 2015 verwendet. Mit dieser Version von VS kann ich mich nicht anmelden, um einen MSDN-Schlüssel zu erhalten, wenn ich als anderer Benutzer ausgeführt werde, sodass er nur geschlossen wird. Irgendwelche Problemumgehungen dafür?
NTDLS
2
Leider spielt es nicht gut, VS als anderer Benutzer auszuführen, wenn die Lösung unter Quellcodeverwaltung steht.
RichardD
1
Hat das Problem, dass VS warten muss, um sich auf die erste Verwendung vorzubereiten, wenn der Testbenutzer es zuvor nicht verwendet hat. Aber ansonsten scheint es ein Vergnügen für VS2013 zu sein.
Kelly Bang
29

Das funktioniert (ich fühle mich so idiotisch):

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

Der obige Befehl fragt jedes Mal nach Ihrem Passwort, sodass Sie für weniger Frust / savecred verwenden können. Sie werden nur einmal gefragt. (funktioniert aber nur für Home Edition und Starter, denke ich)

Moogs
quelle
2
Wie geht das in Visual Studio? Öffnen Sie die Lösung, erstellen Sie den obigen Befehl und führen Sie ihn in Visual Studio aus? Ich benutze VS2008.
Wallstreet Programmer
4
Verstanden
Wallstreet Programmer
Diese Methode hat den Nachteil, dass sie keine Haltepunkte in Ihrem Code erreicht.
Lews Therin
@LewsTherin Nachdem das Projekt gestartet wurde, müssen Sie zu Debug -> An Prozess anhängen gehen, um den VS-Debugger an Ihr Programm anzuhängen. Nicht ideal, aber es scheint alles zu sein, was wir haben.
Gabriel Luci
2
@GabrielLuci Das kann einen Code übersehen, der ausgeführt wird, bevor Sie zu diesem Menü gelangen. Die bessere Option ist, Folgendes in die erste Zeile des Einstiegspunkts Ihres Codes System.Diagnostics.Debugger.Launch();
einzufügen
20

Sie können VSCommands 2010 auch verwenden , um als anderer Benutzer ausgeführt zu werden:

Alt-Text

registrierter Nutzer
quelle
6
Ich sollte erwähnen, dass Sie VSCommands Pro benötigen, um diese Funktion zu aktivieren. In der (kostenlosen) Lite-Version scheinen diese Befehle verfügbar zu sein, aber nichts passiert, wenn sie aufgerufen werden. Ich habe es mit VS2010 Pro versucht.
11.
Ich habe dies mit einer C # -Konsolenanwendung getestet, die den Benutzernamen des Benutzers ausgibt, der die Anwendung ausführt. Die Option, als anderer Benutzer ausgeführt zu werden, funktioniert einwandfrei. Ich weiß nicht, wie man als Administrator oder als normaler Benutzer läuft ...
froeschli
@ d11 Ich habe es mit "VSCommands for Visual Studio 2013" versucht und es funktioniert wie erwartet. (Außer, dass vollständige Pfade für alles erforderlich sind, was in "Befehlszeilenargumente" angegeben ist.)
Rok Strniša
1
Tolle Lösung, diese Erweiterung ist wirklich nett und für 2012 und 2013 kostenlos. Sie fügt einiges nützlicheres hinzu als nur diese.
Tobberoth
1
Schade, dass dieses Projekt nicht mehr gepflegt wird.
Gabriel Luci
6

Ich verwende die folgende Methode basierend auf der Antwort von @ Watki02:

  1. Klicken Sie bei gedrückter Umschalttaste auf die zu debuggende Anwendung
  2. Als anderer Benutzer ausführen
  3. Hängen Sie den Debugger an die Anwendung an

Auf diese Weise können Sie Ihre Visual Studio-Instanz als Ihren eigenen Benutzer behalten, während Sie vom anderen debuggen.

Noelicus
quelle
2

cmd.exe befindet sich an verschiedenen Orten in verschiedenen Windows-Versionen. Um zu vermeiden, dass die Position von cmd.exe benötigt wird, können Sie den Befehl moogs verwenden, der geschrieben wurde, ohne "cmd.exe / C" aufzurufen.

Hier ist ein Beispiel, das für mich funktioniert hat:

  1. Öffnen Sie die Eingabeaufforderung
  2. Wechseln Sie in das Verzeichnis, in dem sich die EXE-Datei Ihrer Anwendung befindet.
  3. Führen Sie den folgenden Befehl aus: runas / user: domain \ username Application.exe

Der letzte Schritt sieht also in der Eingabeaufforderung ungefähr so ​​aus:

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

Hinweis : Der Domainname war in meiner Situation erforderlich.

Michael
quelle
0

Sie können Ihre Eingabeaufforderung als vorgesehener Benutzer öffnen:

  • Umschalt + Rechtsklick auf das Eingabeaufforderungssymbol in der Taskleiste.
  • Wählen Sie (Als anderer Benutzer ausführen)

Geben Sie hier die Bildbeschreibung ein

  • Sie werden mit Login und Passwort aufgefordert

  • Sobald die Eingabeaufforderung gestartet wurde, können Sie anhand des Befehls überprüfen, welchen Benutzer Sie ausführen whoami.

  • Jetzt können Sie das Verzeichnis in Ihr Projekt ändern und ausführen

dotnet run

  • Drücken Sie in Visual Studio Strg + Alt + P (An Prozess anhängen - finden Sie auch im Debug-Menü)

Geben Sie hier die Bildbeschreibung ein

  • Stellen Sie sicher, dass "Prozesse von allen Benutzern anzeigen" aktiviert ist.
  • Suchen Sie den laufenden Prozess und hängen Sie den Debugger an.
Saher Ahwal
quelle
-1

Ich verwende Visual Studio 2015 und versuche, eine Website mit anderen Anmeldeinformationen zu debuggen.

(Ich teste derzeit eine Website in einem Entwicklungsnetzwerk mit einer Kopie des Live-Active Directory. Ich kann Benutzerkonten "entführen", um Berechtigungen auf sichere Weise zu testen.)

  1. Beginnen Sie mit dem Debuggen mit Ihrem normalen Benutzer und stellen Sie sicher, dass Sie wie gewohnt zu http: // localhost: 8080 usw. Aufrufen können
  2. Geben Sie dem anderen Benutzer "Vollzugriff" Zugriff auf das Home-Verzeichnis Ihres normalen Benutzers, dh C: \ Users \ Colin
  3. Machen Sie den anderen Benutzer zu einem Administrator auf Ihrem Computer. Klicken Sie mit der rechten Maustaste auf Computer> Verwalten> Anderen Benutzer zur Administratorgruppe hinzufügen
  4. Führen Sie Internet Explorer als anderen Benutzer aus (Umschalt + Rechtsklick auf Internet Explorer, Als anderer Benutzer ausführen)
  5. Gehen Sie in diesem IE-Fenster zu Ihrer localhost-URL

Wirklich praktisch, um einige schnelle Tests durchzuführen. Der Vollzugriffszugriff ist wahrscheinlich übertrieben, aber ich entwickle mich in einem isolierten Netzwerk. Wenn jemand Notizen zu spezifischeren Einstellungen hinzufügt, werde ich diesen Beitrag in Zukunft gerne bearbeiten.

Colinccook
quelle