我可以在没有提升权限的情况下从visual studio运行程序吗?

时间:2010-09-09 15:03:34

标签: c# visual-studio-2010 permissions

好的,原来我打算在Windows 7中询问有关拖放的问题。我找到了我在这里寻找的答案:C# Drag drop does not work on windows 7。基本上它说,因为我使用提升的权限运行Visual Studio(以及随后的程序),某种隔离层阻止我将文件从资源管理器拖放到我的程序中。

我使用提升权限运行visual studio的原因是因为在IIS上本地运行站点以及Web应用程序在我的解决方案中需要管理员权限。有没有办法告诉visual studio以普通用户身份运行和调试我的其他应用程序?

6 个答案:

答案 0 :(得分:2)

为什么不在桌面上创建另一个快捷方式,在没有提升的情况下启动devenv.exe?

答案 1 :(得分:2)

MSDN states

  

从高程流程启动未提升的应用程序

     

一个经常被问到的问题是如何从提升的进程中启动未提升的应用程序,或者更重要的是,如何在我升级后使用未提升的令牌启动进程。由于没有直接的方法可以做到这一点,通常可以通过将原始应用程序作为标准用户启动并仅提升应用程序中需要管理权限的那些部分来避免这种情况。这样,始终存在一个非提升的进程,可用于以当前登录的桌面用户身份启动其他应用程序。但是,有时候,升级的进程需要让另一个应用程序无法运行。 这可以通过在WindowsVista®中使用任务计划程序来完成。提升的进程可以将任务注册为当前登录的桌面用户。

您可以使用它并实现一个简单的启动器应用程序(可能是VS宏),而不是您的应用程序。启动器应用程序将:

  • 创建将立即运行或由事件触发的计划任务
  • 启动调试对象
  • 将VS调试器连接到已启动的进程

答案 2 :(得分:1)

VS调试器与启动VS的浏览器实例绑定,但您仍可以使用其他浏览器实例浏览受测试的站点。服务器端的操作仍然可以通过调试器运行(但是你不会得到客户端调试 - IE8开发人员工具和FireBug当然仍然可用。)

答案 3 :(得分:1)

从您的应用程序中,使用以下值调用ChangeWindowMessageFilter,以允许拖放到提升的应用程序和非提升的应用程序(如资源管理器):

ChangeWindowMessageFilter (WM_DROPFILES, MSGFLT_ADD);
ChangeWindowMessageFilter (WM_COPYDATA, MSGFLT_ADD);
ChangeWindowMessageFilter (0x0049, MSGFLT_ADD);

信用:http://blog.helgeklein.com/2010/03/how-to-enable-drag-and-drop-for.html

答案 4 :(得分:1)

我为此目的使用老派命令行:

runas /trustlevel:0x20000 "C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE\devenv.exe"

然后在Studio中按F5。

答案 5 :(得分:0)

您可以使用提升的Visual Studio进行编程,您无法让Visual Studio启动可执行文件。

我喜欢0xA3的答案,但是如果你不想去创建VS宏和计划任务来启动你的程序,你可以在桌面上创建一个可执行文件的快捷方式(调试或发布版本)并使用它来启动您的程序。

如果启动调试版本,可以使用Visual Studio调试菜单中的“附加到进程”来附加并进行一些调试。