RunAs Inny użytkownik podczas debugowania w programie Visual Studio

80

Próbuję uruchomić program, który debuguję jako inny użytkownik. Teraz można to zrobić, uruchamiając exe i dołączając go z programu Visual Studio, ale jest to uciążliwe.

Próbowałem użyć polecenia „RunAs”:

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

Ale to jest dołączone do command.com, Visual Studio potrzebuje exe. Teraz mogę stworzyć fałszywą aplikację ... ale ktoś ma na to lepsze rozwiązanie?

moogs
źródło
TO JEST WSPANIAŁE. Teraz czuję się tak głupio, że do przetestowania tego używam właśnie cmd.exe. Fuj.
moogs

Odpowiedzi:

81

Jak wspomniano w aplikacji, w której debugger uruchamia aplikację jako inny użytkownik (link powyżej), kolejny niezwykle prosty sposób na zrobienie tego, który nie wymaga żadnych dodatkowych narzędzi:

  • Przytrzymaj Shift+ kliknij prawym przyciskiem myszy, aby otworzyć nowe wystąpienie programu Visual Studio.
  • Kliknij „Uruchom jako inny użytkownik”

    Uruchom jako inny użytkownik

  • Wprowadź poświadczenia innego użytkownika w następnym wyskakującym oknie

  • Otwórz to samo rozwiązanie, z którym pracujesz

Teraz, gdy debugujesz rozwiązanie, będzie to miało uprawnienia innego użytkownika.

Wskazówka : jeśli zamierzasz uruchamiać wiele wystąpień programu Visual Studio, zmień jego motyw (np. „Ciemny”), aby łatwo było śledzić, który z nich jest łatwy).

Watki02
źródło
To zdecydowanie najlepsze rozwiązanie tutaj. Działa bardzo dobrze. Jedynym problemem jest to, że jeśli nie możesz uzyskać dostępu do TFS lub żadnego z płatnych dodatków (takich jak R #). Obejrzałem ten problem, po prostu normalnie ponownie otwierając rozwiązanie (na moim koncie).
gregsdennis
Nie ma nic złego w otwieraniu tego samego rozwiązania od dwóch różnych użytkowników, jak sugeruje ta odpowiedź. Możesz mieć je otwarte obok siebie, dlatego zasugerowałem zmianę motywu VS dla jednego z nich.
Watki02
2
Używałem tej metody przez lata, aż do Visual Studio 2015. Ta wersja VS nie pozwala mi zalogować się w celu uzyskania klucza MSDN, gdy działa jako inny użytkownik, więc po prostu się zamyka. Jakieś obejście tego problemu?
NTDLS
2
Niestety uruchomienie VS jako innego użytkownika nie działa dobrze, gdy rozwiązanie jest pod kontrolą źródła.
Richard D,
1
Występuje problem z koniecznością czekania, aż VS przygotuje się do pierwszego użycia, jeśli użytkownik testowy nie używał go wcześniej. Ale poza tym wydaje się, że działa to nie lada gratka dla VS2013.
Kelly Bang,
29

To działa (czuję się taki idiotyczny):

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

Powyższe polecenie za każdym razem poprosi o podanie hasła, więc dla mniej frustracji możesz użyć / savecred. Zostaniesz zapytany tylko raz. (ale myślę, że działa tylko dla Home Edition i Starter)

moogs
źródło
2
Jak to zrobić w programie Visual Studio? Czy otwierasz rozwiązanie, kompilujesz i jakoś uruchamiasz powyższe polecenie z Visual Studio? Używam VS2008.
Wallstreet Programmer,
4
Rozumiem, zobacz social.msdn.microsoft.com/Forums/en/vsdebug/thread/…
Wallstreet Programmer,
Ta metoda ma tę wadę, że nie trafi w żadne punkty przerwania w kodzie.
Lews Therin
@LewsTherin Po uruchomieniu projektu musisz przejść do Debuguj -> Dołącz do procesu, aby dołączyć debuger VS do swojego programu. Nie jest idealny, ale wydaje się, że to wszystko, co mamy.
Gabriel Luci
2
@GabrielLuci To może przeoczyć kod, który jest uruchamiany, zanim dotrzesz do tego menu. Lepszą opcją jest dodanie następującego wiersza do pierwszego wiersza punktu wejścia kodu:System.Diagnostics.Debugger.Launch();
Lews Therin
20

możesz również użyć VSCommands 2010 do uruchomienia jako inny użytkownik:

tekst alternatywny

zarejestrowany użytkownik
źródło
6
Powinienem wspomnieć, że potrzebujesz VSCommands Pro, aby ta funkcja była włączona. W wersji Lite (bezpłatnej) polecenia te wydają się być dostępne, ale nic się nie dzieje, gdy są wywoływane. Wypróbowałem to z VS2010 Pro.
d11,
Przetestowałem to za pomocą aplikacji konsoli C #, która wyświetla nazwę użytkownika użytkownika uruchamiającego aplikację. Korzystanie z opcji uruchamiania jako inny użytkownik działa dobrze. Nie wiem, czy mam pracować jako administrator czy normalny użytkownik ...
froeschli,
@ d11 Wypróbowałem to z „VSCommands for Visual Studio 2013” ​​i działa zgodnie z oczekiwaniami. (Z wyjątkiem tego, że dla wszystkiego, co określono w „Argumentach wiersza poleceń”, wymagane są pełne ścieżki).
Rok Strniša
1
Świetne rozwiązanie, to rozszerzenie jest naprawdę fajne i jest darmowe na lata 2012 i 2013, dodaje trochę więcej przydatnych rzeczy niż tylko to.
Tobberoth
1
Szkoda, że ​​ten projekt nie jest już utrzymywany.
Gabriel Luci
6

Korzystam z następującej metody w oparciu o odpowiedź @ Watki02:

  1. Shift + r i kliknij aplikację do debugowania
  2. Uruchom jako inny użytkownik
  3. Dołącz debuger do aplikacji

W ten sposób możesz zachować instancję programu Visual Studio jako własnego użytkownika podczas debugowania z poziomu drugiego.

noelicus
źródło
2

cmd.exe znajduje się w różnych lokalizacjach w różnych wersjach systemu Windows. Aby uniknąć konieczności podania lokalizacji cmd.exe, możesz użyć polecenia, które moogs napisał bez wywoływania „cmd.exe / C”.

Oto przykład, który zadziałał dla mnie:

  1. Otwórz wiersz polecenia
  2. Zmień katalog na lokalizację pliku .exe aplikacji.
  3. Wykonaj następujące polecenie: runas / user: domena \ nazwa użytkownika Aplikacja.exe

Tak więc ostatni krok będzie wyglądał mniej więcej tak w wierszu polecenia:

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

Uwaga : nazwa domeny była wymagana w mojej sytuacji.

Michael
źródło
0

Możesz otworzyć wiersz polecenia jako zamierzony użytkownik:

  • Shift + kliknij prawym przyciskiem myszy ikonę wiersza polecenia na pasku zadań.
  • Wybierz (Uruchom jako inny użytkownik)

wprowadź opis obrazu tutaj

  • Zostaniesz poproszony o podanie loginu i hasła

  • Po uruchomieniu wiersza polecenia CommandP możesz dwukrotnie sprawdzić, którego użytkownika używasz, zgodnie z poleceniem whoami.

  • Teraz możesz zmienić katalog na swój projekt i uruchomić

dotnet run

  • W programie Visual Studio naciśnij Ctrl + Alt + P (Dołącz do procesu - można go również znaleźć w menu Debugowanie)

wprowadź opis obrazu tutaj

  • Upewnij się, że opcja „Pokaż procesy wszystkich użytkowników” jest zaznaczona.
  • Znajdź uruchomiony proces i dołącz debugger.
Saher Ahwal
źródło
-1

Używam programu Visual Studio 2015 i próbuję debugować witrynę internetową przy użyciu różnych poświadczeń.

(Obecnie testuję witrynę w sieci deweloperskiej, która ma kopię aktywnego katalogu aktywnego; mogę „przechwytywać” konta użytkowników, aby przetestować uprawnienia w bezpieczny sposób)

  1. Rozpocznij debugowanie od zwykłego użytkownika, upewnij się, że możesz uzyskać dostęp do http: // localhost: 8080 jak zwykle itp
  2. Daj innemu użytkownikowi „pełną kontrolę” dostęp do katalogu domowego swojego normalnego użytkownika, tj. C: \ Users \ Colin
  3. Nadaj drugiemu użytkownikowi uprawnienia administratora na swoim komputerze. Kliknij prawym przyciskiem myszy Komputer> Zarządzaj> Dodaj innego użytkownika do grupy administratorów
  4. Uruchom Internet Explorer jako inny użytkownik (Shift + prawy przycisk myszy Internet Explorer, Uruchom jako inny użytkownik)
  5. Przejdź do adresu URL swojego hosta lokalnego w tym oknie przeglądarki IE

Bardzo wygodne wykonanie szybkich testów. Dostęp z pełną kontrolą jest prawdopodobnie przesadą, ale rozwijam się w odizolowanej sieci. Jeśli ktoś doda uwagi o bardziej szczegółowych ustawieniach, z przyjemnością edytuję ten post w przyszłości.

colinccook
źródło