解决高版本操作系统无法拖动文件到软件界面打开的问题

解决高版本操作系统无法拖动文件到软件界面打开的问题

经验之谈青年君上2018-07-01 7:51:164412A+A-

转至zzmzzff的教学网:https://blog.csdn.net/zzmzzff/article/details/80298414

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就是累赘,为了安全,却降低工作效率,如今杀软已经烂大街了,系统的保护完全没必要。


博主推荐:

①定位注册表使用:Registry Workshop(我自用版本见文末网盘

②搜索UserAccountControlSettings程序使用:Listary

点击这里复制本文地址 以上内容由 青年君上 发表,请务必在转载分享时注明本文地址!如对内容有疑问,请联系我。
qrcode

两伙青年 © All Rights Reserved.  
关于我| 桂ICP备18001158号-1 | ”” 桂公网安备 45010702001108号

请您先登录再评论!