Win7 WPF程序无法接受外部拖拽
最近在WPF项目中遇到一个问题。虽然选择了AllowDrop = True,但是还是无法支持从外部拖拽文件到程序,倒是内部拖拽(如从一个列表拖拽到树)和从程序拖拽到外部可以。
解决过程
1.考虑是程序的问题,于是新建了一个程序WpfDragDrop,主要添加代码如下:
<ListBox Name="list" AllowDrop="True" Background="#FFE82424">
<ListBoxItem Content="1"/>
</ListBox>
编译后,调试证明无法接受外部拖拽
2.上网查了一下,网上有人遇到类似问题,说是在调试下不可以,但是直接运行可以,测试后确认果然如此。
3.比较WpfDragDrop和项目工程,排除各种可能原因(如控件,事件等),最后发现区别在于项目工程采用管理员权限,而WpfDragDrop没有。
4.上网查询,发现在右UAC检测的系统上管理员权限开启的程序时无法支持外部拖拽的,使用微软绘图板测试证明果然如此。
5.发现VS2010是采用管理员权限打开的,调试过程中,会继承权限,所以在调试过程中无法支持外部拖拽,而直接调用无管理员权限的程序可以支持。
结论
都是管理员权限惹的祸!