解决高版本操作系统文件无法拖动问题

win7系统,包括win8、win10,当一个软件以管理员身份运行后,文件拖放打开功能将失效,只能从软件菜单来打开文档,特别麻烦。原因:win7系统后,微软增加了“UI消息隔离机制(UMI)”,低权限进程无法和高权限进程进行通信,explorer.exe(图形外壳进程)进程权限并非是完全管理员权限,所以它不能向管理员(Administrator)权限进程发送消息,而文件拖动会发送一个WM_DROPFILES消息出去,当前进程是高权限进程,所以收不到WM_DROPFILES消息。

解决办法:1.开发者角度,win7/8/10,调用ChangeWindowMessageFilter或者ChangeWindowMessageFilterEx即可,xp下不存在该机制,无需调用,也无法调用(xp版user32.dll中根本没有该函数)。

在程序启后调用:
ChangeWindowMessageFilter(WM_DROPFILES, MSGFLT_ADD);  // MSGFLT_ADD=0x1  MSGFLT_REMOVE=0x2
ChangeWindowMessageFilter(WM_COPYGLOBALDATA, MSGFLT_ADD);  // WM_COPYGLOBALDATA=0x0049

2.用户角度,修改注册表HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System下的EnableLUA值为0,重启电脑。该操作用于禁用LUA(Least-privilege User Account,最低权限用户账户),然后运行UserAccountControlSettings.exe,关闭UAC(User Account Control,用户账户控制)。个人感觉UAC和UMI就是累赘,为了安全,却降低工作效率,如今杀软已经烂大街了,系统的保护完全没必要。
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值