一个很奇怪的逻辑,为啥7zip和winrar这种软件,对这俩操作的动作不一样?
你打开一个压缩包,在菜单里选择解压缩,它是不经过中间步骤直接解压到你的目标路径的。但你如果把文件往外拖动,它就会先解压到临时文件夹,再移动到目标路径。
为啥会出现这种差别?是windows的api限制,还是软件作者脑子瓦特了?。。
我都是右键解压的,你们都是双击进去再解压的?[困惑]
360压缩拖动也能直接解压到路径,所以应该不是windows的限制 搜到了这个解释,可以参考一下。
https://www.zhihu.com/question/26197265/answer/32359969 可以抱的萝卜 发表于 2023-8-23 14:56
我都是右键解压的,你们都是双击进去再解压的?
如果要分类,或者压缩文件和解压的不在同一个目录的,就需要拖动方便点 我刚好写过这个,windows OLE拖放对象创建后就是系统管理了,DoDragDrop这个函数并不会告知程序拖放目标最终的路径,所以如果想知道目标路径就得截获windows资源管理器的消息,这个行为可能会报毒,换句话说就是程序只管创建拖放对象,后面不用管 一直用winrar,清爽 纯粹设计逻辑不一样而已
没必要纠结 rSkip 发表于 2023-8-23 14:57
搜到了这个解释,可以参考一下。
https://www.zhihu.com/question/26197265/answer/32359969 ...
好问题好回答 我也一直有这个疑问,长知识了[吃惊] 学到了奇怪的知识 bandizip解决了这个问题...
先探测目标路径,然后再解压...
带路径是解压是软件独立完成的,直接拖放的话,解压软件不知道路径,但window资源管理器知道,所以需要放在临时文件夹再拖到目的地 有用的知识增加了https://cdn.jsdelivr.net/gh/master-of-forums/master-of-forums/public/images/patch.gif 解压软件脑子没坏, api压根没告诉解压软件目标位置是哪
设计api的脑子也没坏, 因为你拖放的目标位置可以不是一个存储路径, 完全可以是其他软件允许接受拖放的区域 当你拖动文件的时候,由于没有解压的目标文件夹,那么解压工具能做的有两种:一是在内存中解压,而是在Windows指定的临时文件夹解压
zip貌似可以在内存里直接解压,也就不需要到临时文件夹里解压 uuyyhhjj 发表于 2023-8-23 15:07
我刚好写过这个,windows OLE拖放对象创建后就是系统管理了,DoDragDrop这个函数并不会告知程序拖放目标最 ...
那么系统解压在appdata里面创建的文件夹会自动删除吗? k8qxt5 发表于 2023-8-23 17:33
那么系统解压在appdata里面创建的文件夹会自动删除吗?
不会,要软件自己删除 原因上面好几位都解释了,
windows已经是给软件权限比较大的系统了,安全和方便难两全,macOS也推出沙盒的那两年,不少app都从macOS自带的商店里下架或不再提交新版,就是因为沙盒版在这类用户体验上有了更多限制。
uuyyhhjj 发表于 2023-8-23 15:07
我刚好写过这个,windows OLE拖放对象创建后就是系统管理了,DoDragDrop这个函数并不会告知程序拖放目标最 ...
微软这是什么逻辑,是不是签名了就可以不报毒? 有个典型场景是把文件拖拽到需要管理员权限的文件夹里,如果直接由压缩软件直接写入对应路径就不得不提权,要么重开压缩软件,要么给压缩软件注册个系统服务,都不怎么合适,不如交给资源管理器自己提权处理,安全性上也有好处。 聽說WINRAR 有漏洞,要先升級到6.23版!!!!
页:
[1]