在VS中调试为非管理员

时间:2009-03-06 22:27:04

标签: .net debugging code-access-security non-admin

我正在做一些WinForms开发,运行XP和VS 2005(古代,我知道)。我想确保我的应用程序可以在没有管理员权限的情况下运行,但我懒得尝试以非管理员身份运行VS,而且我不想登录和注销来测试我的应用程序。

有没有办法可以像非管理员一样调试?

是否有一组代码访问安全属性我可以添加到我的代码中,这将迫使我在与非管理员相同的权限集中运行?

3 个答案:

答案 0 :(得分:2)

从当前登录的桌面会话中以另一个用户身份运行VS.见How to enable and use the "Run As" command when running programs in Windows。这意味着您无需登录和退出。

我建议您通过RunAs将目标应用程序作为另一个用户运行,然后通过Debug>将VS Debugger连接到进程(如果需要)。在Visual Studio中附加到处理...菜单项。

答案 1 :(得分:0)

根据Phil的回答,您可以通过将启动项目设置为:

来自动执行该过程

启动外部程序:c:\windows\system32\runas.exe

使用命令行参数:/noprofile /user:{MachineName}\{UserName} {ApplicationName}.exe

不幸的是,我认为没有一种自动方法将进程附加到VS调试器(因为安全警告),但通过有条件地调用

#if (DEBUG) 
    System.Diagnostics.Debugger.Launch();
#endif

只需单击两次,系统就会提示您附加到调试器。

答案 2 :(得分:0)

通过更根本的改变来解决这个问题:

如果您的计算机允许并发远程桌面会话(VistaXP,将Google用于其他人),然后启动到127.0.0.2的远程桌面会话,则可以完全运行本地系统上的不同用户,无需在用户之间切换即可随意执行任何操作。

对我来说,我通常作为非管理用户运行,但每当我需要运行管理任务时,都以管理员身份启动远程桌面会话。但是,你可以轻松地做相反的事情。