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

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

我的问题:

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

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

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

【问题讨论】:

    标签: visual-studio-2010 drag-and-drop privileges windows-explorer


    【解决方案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。祝你有美好的一天,我的朋友。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-05-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-01-14
      相关资源
      最近更新 更多