在Visual Studio中进行调试时,运行方式为其他用户


80

我正在尝试以其他用户身份运行正在调试的程序。现在,可以通过运行exe并从Visual Studio附加附件来完成此操作,但这很麻烦。

我尝试做的是使用“ RunAs”命令:

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

但这是附加到command.com的,Visual Studio需要一个exe。现在,我可以创建一个虚拟应用程序...。但是有人对此有更好的解决方案吗?


太棒了。现在,我感到非常愚蠢,因为我只使用cmd.exe对此进行了测试。啊。
moogs

Answers:


81

调试器以不同的用户身份运行应用程序(在上面链接)中所述,这是另一种非常简单的方法,不需要任何其他工具:

  • 按住Shift+右键单击以打开Visual Studio的新实例。
  • 点击“以其他用户身份运行”

    以其他用户身份运行

  • 在下一个弹出窗口中输入其他用户的凭据

  • 打开您正在使用的相同解决方案

现在,当您调试解决方案时,它将具有其他用户的权限。

提示:如果您要运行Visual Studio的多个实例,请更改其主题(例如更改为“暗”),以便可以轻松跟踪哪个实例。


这是到目前为止最好的解决方案。效果很好。唯一的麻烦是,如果您无法访问TFS或任何付费附件(例如R#)。通过简单地正常打开解决方案(使用我的帐户),我可以解决此问题。
gregsdennis

像这个答案所示,从两个不同的用户打开相同的解决方案没有错。您可以将它们并排打开,这就是为什么我建议为其中之一切换VS主题的原因。
2013年

2
在Visual Studio 2015之前,我一直使用这种方法多年。当以其他用户身份运行时,此版本的VS不允许我登录以获取MSDN密钥,因此它只能关闭。有什么解决方法吗?
NTDLS '02

2
不幸的是,当解决方案处于源代码控制之下时,以其他用户身份运行VS效果不佳。
RichardD

1
如果测试用户以前没有使用过VS,确实有必须等待VS准备首次使用的问题。但除此之外,它似乎对VS2013有用。
凯利·邦

29

这有效(我觉得很蠢):

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

上面的命令每次都会询问您的密码,因此为了减少麻烦,可以使用/ savecred。您只会被问到一次。(我认为,但仅适用于家庭版和入门版)


2
您如何在Visual Studio中做到这一点?您是否打开解决方案,构建并以某种方式从Visual Studio中运行上述命令?我使用VS2008。
华尔街程序员2009年


该方法有一个缺点,因为它不会在代码中遇到任何断点。
Lews Therin

@LewsTherin项目开始运行后,您需要转到Debug-> Attach to Process将VS调试器附加到程序。不理想,但这似乎是我们所拥有的。
加布里埃尔·卢西

2
@GabrielLuci在进入该菜单之前,它可能会丢失一些运行的代码。更好的选择是将以下内容添加到代码入口点的第一行:System.Diagnostics.Debugger.Launch();
Lews Therin

20

您还可以使用VSCommands 2010以其他用户身份运行:

替代文字


6
应该提到的是,您需要VSCommands Pro才能启用此功能。在Lite(免费)版本中,这些命令似乎可用,但是调用它们时什么也没有发生。我在VS2010 Pro上尝试过。
2012年

我使用C#控制台应用程序进行了测试,该应用程序会打印出运行该应用程序的用户的用户名。使用该选项以其他用户身份运行可以正常工作。我不知道以管理员身份运行还是以普通用户身份运行...
froeschli 2012年

@ d11我使用“ VSCommands for Visual Studio 2013”​​进行了尝试,它可以按预期工作。(除了“命令行参数”中指定的所有内容都需要完整路径之外。)
RokStrniša2013年

1
很好的解决方案,此扩展真的很不错,并且在2012年和2013年免费提供,它不仅增加了很多有用的内容。
Tobberoth

1
可惜这个项目不再维护了。
加布里埃尔·卢西

6

我正在基于@ Watki02的答案使用以下方法

  1. 按住Shift键并单击该应用程序以进行调试
  2. 以其他用户身份运行
  3. 将调试器附加到应用程序

这样,您就可以将Visual Studio实例保留为自己的用户,而从另一个用户进行调试。


2

cmd.exe位于不同版本的Windows中的不同位置。为避免需要cmd.exe的位置,可以使用写的命令moogs而不调用“ cmd.exe / C”。

这是一个对我有用的例子:

  1. 打开命令提示符
  2. 将目录更改为应用程序的.exe文件所在的目录。
  3. 执行以下命令:runas / user:domain \ username Application.exe

因此,最后一步在命令提示符中将类似于以下内容:

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

注意:在我的情况下,域名是必需的。


0

您可以以目标用户身份打开命令提示符:

  • Shift +右键单击任务栏上的“命令提示符”图标。
  • 选择(以其他用户身份运行)

在此处输入图片说明

  • 系统将提示您输入登录名和密码

  • 一旦CommandP Prompt启动,您就可以通过命令仔细检查正在运行的用户whoami

  • 现在您可以将目录更改为您的项目并运行

dotnet run

  • 在Visual Studio中,按Ctrl + Alt + P(附加到进程-也可以从“调试”菜单中找到)

在此处输入图片说明

  • 确保选中“显示所有用户的进程”。
  • 查找正在运行的进程并附加调试器。

-1

我正在使用Visual Studio 2015,并尝试使用其他凭据调试网站。

(我目前正在开发网络上具有实时活动目录副本的网站上进行测试;我可以“劫持”用户帐户以安全方式测试权限)

  1. 以普通用户开始调试,确保可以访问http:// localhost:8080
  2. 其他用户“完全控制”访问普通用户的主目录,即C:\ Users \ Colin
  3. 设为其他用户成为您计算机上的管理员。右键单击计算机>管理>将其他用户添加到管理员组
  4. 其他用户身份运行Internet Explorer(Shift +右键单击Internet Explorer,以其他用户身份运行)
  5. 在该IE窗口中转到您的本地主机URL

进行一些快速测试真的很方便。完全控制访问权限可能会过大,但是我是在隔离的网络上开发的。如果有人添加有关更具体设置的注释,我将来会很乐意编辑此帖子。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.