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

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

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

有帮助吗?

解决方案

从当前登录的桌面会话中以另一个用户身份运行VS.请参阅如何启用和使用“运行方式”在Windows中运行程序时的命令。这意味着您无需登录和退出。

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

其他提示

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

来自动执行该过程

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

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

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

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

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

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

如果您允许计算机允许并发远程桌面会话( Vista XP ,将Google用于其他人),然后启动到127.0.0.2的远程桌面会话,您可以在本地系统上以完全不同的用户身份运行,让您可以做任何事情希望无需在用户之间切换。

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top