RunAs Một người dùng khác khi gỡ lỗi trong Visual Studio


80

Tôi đang cố gắng chạy chương trình mà tôi đang gỡ lỗi với tư cách là một người dùng khác. Bây giờ, điều này có thể được thực hiện bằng cách chạy exe và đính kèm từ Visual Studio, nhưng điều này rất phức tạp.

Những gì tôi đã cố gắng làm là sử dụng lệnh "RunAs":

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

Nhưng điều này được đính kèm với command.com, Visual Studio muốn một exe. Bây giờ tôi có thể tạo một ứng dụng giả .... nhưng có ai có giải pháp tốt hơn cho việc này không?


ĐÓ LÀ VÔ CÙNG. Bây giờ tôi cảm thấy thật ngu ngốc khi tôi chỉ sử dụng cmd.exe để kiểm tra điều này. Ặc.
moogs

Câu trả lời:


81

Như đã đề cập trong để trình gỡ lỗi chạy ứng dụng với tư cách người dùng khác (được liên kết ở trên), một cách cực kỳ đơn giản khác để thực hiện việc này mà không cần thêm bất kỳ công cụ nào:

  • Giữ Shift+ nhấp chuột phải để mở phiên bản mới của Visual Studio.
  • Nhấp vào "Chạy với tư cách người dùng khác"

    Chạy với tư cách người dùng khác

  • Nhập thông tin đăng nhập của người dùng khác trong cửa sổ bật lên tiếp theo

  • Mở cùng một giải pháp mà bạn đang làm việc

Bây giờ khi bạn gỡ lỗi giải pháp, nó sẽ có quyền của người dùng khác.

Gợi ý : nếu bạn định chạy nhiều phiên bản của Visual Studio, hãy thay đổi chủ đề của nó (như "tối") để bạn có thể dễ dàng theo dõi phiên bản nào).


Đây là giải pháp tốt nhất ở đây. Hoạt động rất tốt. Vấn đề duy nhất là nếu bạn không thể truy cập TFS hoặc bất kỳ tiện ích bổ sung trả phí nào của mình (như R #). Tôi đã giải quyết vấn đề này bằng cách chỉ cần mở lại giải pháp bình thường (trong tài khoản của tôi).
gregsdennis

Không có gì sai khi mở cùng một giải pháp từ hai người dùng khác nhau như câu trả lời này gợi ý. Bạn có thể để chúng mở song song, đó là lý do tại sao tôi đề xuất chuyển chủ đề VS của bạn cho một trong số chúng.
Watki02

2
Tôi đã sử dụng phương pháp này trong nhiều năm cho đến khi visual studio 2015. Phiên bản VS này sẽ không cho phép tôi đăng nhập để lấy khóa MSDN khi chạy với tư cách người dùng khác nên nó chỉ đóng lại. Bất kỳ giải pháp thay thế cho điều đó?
NTDLS

2
Thật không may, việc chạy VS với tư cách người dùng khác không chơi tốt khi giải pháp nằm trong tầm kiểm soát nguồn.
RichardD

1
Có vấn đề là phải đợi VS chuẩn bị cho lần sử dụng đầu tiên nếu người dùng thử nghiệm chưa sử dụng nó trước đó. Nhưng nếu không, nó có vẻ hoạt động tốt cho VS2013.
Kelly Bang,

29

Điều này hoạt động (tôi cảm thấy thật ngu ngốc):

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

Lệnh trên sẽ hỏi mật khẩu của bạn mọi lúc, vì vậy để bớt bực bội, bạn có thể sử dụng / savecred. Bạn chỉ được hỏi một lần. (nhưng chỉ hoạt động cho Home Edition và Starter, tôi nghĩ)


2
Làm thế nào để bạn làm điều này trong Visual Studio? Bạn có mở giải pháp, xây dựng và bằng cách nào đó chạy lệnh trên từ Visual Studio không? Tôi sử dụng VS2008.
Lập trình viên Wallstreet


Phương pháp này có một nhược điểm là nó sẽ không đạt được bất kỳ điểm ngắt nào trong mã của bạn.
Lews Therin 19/09/18

@LewsTherin Sau khi dự án bắt đầu chạy, bạn cần vào Gỡ lỗi -> Đính kèm vào Quy trình để đính kèm trình gỡ lỗi VS vào chương trình của bạn. Không lý tưởng, nhưng nó dường như là tất cả những gì chúng ta có.
Gabriel Luci,

2
@GabrielLuci Điều đó có thể bỏ lỡ một số mã chạy trước khi bạn có thể truy cập menu đó. Các lựa chọn tốt hơn là thêm những điều sau đây vào dòng đầu tiên của các điểm xâm nhập của mã của bạn:System.Diagnostics.Debugger.Launch();
Lews Therin

20

bạn cũng có thể sử dụng VSCommands 2010 để chạy với tư cách người dùng khác:

văn bản thay thế


6
Tôi nên lưu ý rằng bạn cần VSCommands Pro để kích hoạt tính năng này. Trong phiên bản Lite (miễn phí), các lệnh này dường như có sẵn, nhưng không có gì xảy ra khi chúng được gọi. Tôi đã thử nó với VS2010 Pro.
d11,

Tôi đã thử nghiệm điều này bằng ứng dụng bảng điều khiển C #, ứng dụng này in ra tên người dùng của người dùng đang chạy ứng dụng. Sử dụng tùy chọn để chạy khi người dùng khác hoạt động tốt. Tôi không biết về việc chạy as administrator hoặc chạy như người dùng bình thường ...
froeschli

@ d11 Tôi đã thử nó với "VSCommands cho Visual Studio 2013" và nó hoạt động như mong đợi. (Ngoại trừ đường dẫn đầy đủ là bắt buộc đối với bất kỳ thứ gì được chỉ định trong "Đối số dòng lệnh".)
Rok Strniša

1
Giải pháp tuyệt vời, tiện ích mở rộng này thực sự hay và miễn phí cho năm 2012 và 2013, nó bổ sung thêm một số thứ hữu ích hơn chỉ là cái này.
Tobberoth

1
Thật xấu hổ vì dự án này không được duy trì nữa.
Gabriel Luci

6

Tôi đang sử dụng phương pháp sau dựa trên câu trả lời của @ Watki02:

  1. Shift khi nhấp vào ứng dụng để gỡ lỗi
  2. Chạy với tư cách người dùng khác
  3. Đính kèm trình gỡ lỗi vào ứng dụng

Bằng cách đó, bạn có thể giữ phiên bản studio trực quan của mình làm người dùng của riêng bạn trong khi gỡ lỗi từ người khác.


2

cmd.exe nằm ở các vị trí khác nhau trong các phiên bản Windows khác nhau. Để tránh cần đến vị trí của cmd.exe, bạn có thể sử dụng lệnh moogs đã viết mà không cần gọi "cmd.exe / C".

Đây là một ví dụ phù hợp với tôi:

  1. Mở Command Prompt
  2. Thay đổi thư mục thành nơi chứa tệp .exe của ứng dụng của bạn.
  3. Thực thi lệnh sau: runas / user: domain \ username Application.exe

Vì vậy, bước cuối cùng sẽ trông giống như thế này trong Command Prompt:

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

Lưu ý : tên miền là bắt buộc trong trường hợp của tôi.


0

Bạn có thể mở dấu nhắc lệnh của mình với tư cách là người dùng dự định:

  • Shift + Nhấp chuột phải vào biểu tượng Command Prompt trên thanh tác vụ.
  • Chọn (Chạy với tư cách người dùng khác nhau)

nhập mô tả hình ảnh ở đây

  • Bạn sẽ được nhắc đăng nhập và mật khẩu

  • Khi CommandP Prompt khởi động, bạn có thể kiểm tra lại người dùng mà bạn đang chạy bằng lệnh whoami.

  • Bây giờ bạn có thể thay đổi thư mục thành dự án của mình và chạy

dotnet run

  • Trong Visual Studio, nhấn Ctrl + Alt + P (Đính kèm vào Quy trình - cũng có thể được tìm thấy từ menu Gỡ lỗi)

nhập mô tả hình ảnh ở đây

  • Đảm bảo chọn "Hiển thị quy trình từ tất cả người dùng".
  • Tìm tiến trình đang chạy và đính kèm trình gỡ lỗi.

-1

Tôi đang sử dụng Visual Studio 2015 và cố gắng gỡ lỗi một trang web có thông tin đăng nhập khác nhau.

(Tôi hiện đang thử nghiệm một trang web trên mạng phát triển có bản sao của thư mục hoạt động trực tiếp; tôi có thể "chiếm đoạt" tài khoản người dùng để kiểm tra quyền theo cách an toàn)

  1. Bắt đầu gỡ lỗi với người dùng bình thường của bạn, đảm bảo bạn có thể truy cập http: // localhost: 8080 như bình thường, v.v.
  2. Cấp cho người dùng khác quyền truy cập "Toàn quyền kiểm soát" vào thư mục chính của người dùng bình thường của bạn, tức là C: \ Users \ Colin
  3. Đặt người dùng khác làm quản trị viên trên máy của bạn. Nhấp chuột phải vào Máy tính> Quản lý> Thêm người dùng khác vào nhóm Quản trị viên
  4. Chạy Internet Explorer với tư cách người dùng khác (Shift + Nhấp chuột phải vào Internet Explorer, Chạy với tư cách người dùng khác)
  5. Truy cập URL máy chủ cục bộ của bạn trong cửa sổ IE đó

Thực sự thuận tiện để thực hiện một số thử nghiệm nhanh chóng. Quyền truy cập Full Control có lẽ là quá mức cần thiết nhưng tôi phát triển trên một mạng bị cô lập. Nếu có ai thêm ghi chú về các cài đặt cụ thể hơn, tôi sẽ sẵn lòng chỉnh sửa bài đăng này trong tương lai.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.