[英]Is there a known bug in Visual Studio 2008 for using drop target in C++ when running Visual Studio as administrator?
我们有一个应用程序,允许用户将图片拖动到窗口,并且该窗口是放置目标(使用OLE)。 当此代码在调试器中运行并且Visual Studio实例以管理员身份运行(从桌面右击)时,则不允许目标放置。
如果该exe独立运行,则可以正常运行。
如果Visual Studio实例不是以管理员身份运行的,则该功能在调试器中可以正常工作。 (相同的解决方案/项目文件/等)
Win7 OS。 Visual Studio2008。非托管C ++
我觉得很奇怪。 不知道为什么会这样。 实际上,我会猜想与以管理员身份运行VS相对的。
是否有人看过此书,或者是否有人链接到变通方法或解释?
这最有可能由于UIPI (用户界面特权隔离)而发生。
如果您以Admin身份启动了流程(由于父流程(Visual Studio)以admin身份运行),则UIPI不会让未提升的(admin)流程将任何消息发送到您的应用程序。 应用程序之间的拖放是使用Windows消息实现的。
若要解决此问题,可以使用ChangeWindowMessageFilterEx() API选择加入适当的拖放消息。
如果您想真正地修复它,那么您需要
当解决方法可能就像从另一个提升的应用程序中删除一样简单时,这是很多额外的工作(要获得提升的资源管理器,只需调用任何提升应用程序的File-> Open对话框),但是具有拖动和如果您的任何客户曾经运行过提升的应用程序,-drop都将正常工作。
不幸的是,这看起来像是操作系统中的缺陷:
那好吧。
我觉得这整个问题令人震惊。 微软已经把这个IMO搞砸了。 本质上,如果我想以提升模式运行MSVC,例如,当我构建其注册COM服务器的解决方案时,我们将无法正确调试应用程序。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.