无法从特权运行的 Visual Studio 2010 拖放到调试的应用程序运行

Posted

技术标签:

【中文标题】无法从特权运行的 Visual Studio 2010 拖放到调试的应用程序运行【英文标题】:Cannot drag and drop to debugged-application run from a privileged-run Visual Studio 2010 【发布时间】:2011-06-01 11:34:43 【问题描述】:

我正在调试我的应用程序,它在 Visual Studio 2010 中具有拖放功能。我必须以特权模式运行 IDE,因为我的某些项目需要这样做。

我的问题:

正常运行 .exe 文件时可以拖放(从 Windows Explorer (WE) 运行),但在 VS2010 中调试时,我无法在我的应用和 WE 之间进行拖放。

我尝试在特权模式下打开 WE,但仍然无法调试。

你有同样的问题吗?如果你这样做了,你有什么解决方法吗?请分享。

【问题讨论】:

【参考方案1】:

另一种解决方法是从 Windows 资源管理器运行调试二进制文件,并通过“工具”或“调试”菜单从 Visual Studio 中附加到进程。我已经验证在使用这种方法时在调试器中接收到拖动事件。

【讨论】:

【参考方案2】:

这是设计使然,UAC 的一个方面称为 UIPI(用户界面特权隔离)。它可以防止非提升的进程通过 Windows 消息或拖放劫持提升的进程。它可以防止破碎攻击。提升进程有一种方法可以显式允许带有 ChangeWindowMessageFilter 的消息。但不适用于拖放,它不是基于消息的。

对此没有像样的 api 级解决方法,必须以声明方式完成。该程序的清单需要使用uiaccess = true,使用来自批准机构的证书进行代码签名,并安装在 c:\windows 或 c:\program 文件中。

【讨论】:

@Passant 听到这个消息我很难过 :( 禁用 UAC 对我来说是一个很好的解决方法。如果您知道如何快速打开/关闭 UAC,例如使用命令行,我很乐意使用它。 @Passant 关于关闭 UAC 的另一件事是我们需要重新启动操作系统 :( @Passant 我已经在这里superuser.com/questions/227860/… 发布了关于此的问题。如果您有兴趣,请加入我们。 谢谢@Hans,它成功了。我已经为此苦苦挣扎了很久。疯狂的 UIPI。祝你有美好的一天,我的朋友。

以上是关于无法从特权运行的 Visual Studio 2010 拖放到调试的应用程序运行的主要内容,如果未能解决你的问题,请参考以下文章

从 Visual Studio IDE 运行时,项目无法加载图像资产

我无法从 Visual Studio Code Mac OS 的集成终端运行 nodemon

无法从 Visual Studio 运行控制台应用程序:System.AccessViolationException

无法在 Visual Studio 2013 中运行单元测试

Eigen 程序无法从 Visual Studio 编译,但从命令行编译成功

是否可以从命令行运行 Visual Studio 转换向导?