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

Posted

技术标签:

【中文标题】我可以在没有提升权限的情况下从 Visual Studio 运行程序吗?【英文标题】:Can I run a program from visual studio without elevated permissions? 【发布时间】:2011-04-10 07:44:23 【问题描述】:

好的,所以我本来想问一下 Windows 7 中的拖放操作。我在这里找到了我正在寻找的答案:C# Drag drop does not work on windows 7。基本上它说,由于我正在运行具有提升权限的 Visual Studio(以及随后的我的程序),某种隔离层会阻止我将文件从资源管理器拖放到我的程序中。

我以提升的权限运行 Visual Studio 的原因是因为需要管理员权限才能在 IIS 上本地运行站点,并且 Web 应用程序在我的解决方案中。有没有办法让 Visual Studio 以普通用户的身份运行和调试我的其他应用?

【问题讨论】:

【参考方案1】:

为什么不在桌面上创建另一个快捷方式来启动 devenv.exe 而无需提升?

【讨论】:

【参考方案2】:

MSDN states:

从提升的进程启动非提升的应用程序

一个常见问题是如何从提升的进程启动未提升的应用程序,或者更根本地,当我运行提升后如何使用我的未提升的令牌启动进程。由于没有直接的方法来执行此操作,因此通常可以通过以标准用户身份启动原始应用程序并仅提升应用程序中需要管理权限的那些部分来避免这种情况。这样,始终有一个非提升的进程可用于以当前登录的桌面用户身份启动其他应用程序。然而,有时,提升的进程需要让另一个应用程序以非提升的方式运行。 这可以通过使用 Windows Vista® 中的任务计划程序来完成。提升的进程可以注册任务以作为当前登录的桌面用户运行。

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

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

【讨论】:

【参考方案3】:

VS 调试器与启动 VS 的浏览器实例绑定,但您仍然可以与另一个浏览器实例一起使用来浏览被测站点。服务器端的操作仍将通过调试器运行(但您不会获得客户端调试——当然,IE8 开发人员工具和 FireBug 仍然可用)。

【讨论】:

重读我的问题,确实有点令人困惑。我不是在问有关运行网络应用程序的问题。 Web 应用程序只是我需要以管理员身份运行 VS 的原因。我正在尝试做的是调试一个 Windows 窗体应用程序,它也是解决方案的一部分。【参考方案4】:

在您的应用程序中,使用以下值调用 ChangeWindowMessageFilter,以允许拖放到您的提升应用程序和非提升应用程序(如 Explorer)中/从其中拖放:

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

【讨论】:

【参考方案5】:

为此我使用老式命令行:

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

然后只需在 Studio 中按 F5。

【讨论】:

【参考方案6】:

您可以使用提升的 Visual Studio 进行编程,只是不能让 Visual Studio 启动可执行文件。

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

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

【讨论】:

以上是关于我可以在没有提升权限的情况下从 Visual Studio 运行程序吗?的主要内容,如果未能解决你的问题,请参考以下文章

Visual Studio 需要在 Windows 7 中提升权限

如何在没有 root 的情况下从 Ubuntu 18.04.3 中完全删除节点?

是否可以在未安装 VS 的情况下从 MSBuild 命令行运行 FxCop 代码分析?

为啥我可以在没有任何配置文件的情况下从 App Store 运行应用程序?

是否可以在没有画布的情况下从 ImageBitMap Web 对象中获取像素?

我可以在没有任何锁的情况下从不同的线程读取内存缓冲区吗?