无法从特权运行的 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 中运行单元测试