针对许多用户反馈创建文件较大的下载任务时,可能出现磁盘繁忙的问题。迅雷X10.1.16版本提供了“快速申请磁盘空间”的新方式,可以避免因为申请磁盘空间造成的“磁盘繁忙”。
这个功能推出后,引起了部分用户的好奇,想要更深入的了解这个功能。那我们得从微软推出Windows Vista引起的一个“问题”说起。
问题起因:
2006年11月,Windows Vista 发布,随之带来了“用户帐户控制功能(User Account Control,简称UAC)”
UAC功能对磁盘的权限控制给当时的迅雷带来了一个大麻烦。
没有管理员权限的情况下,申请磁盘空间并进行随机写入时,会触发Windows对所申请的磁盘空间进行初始化操作。
Windows之所以作出这个限制,可能是因为Windows的文件系统在删除文件时,并没有真的将磁盘上的文件数据擦除,而是给数据加上“已删除”标记了事。
但是Windows担心未经用户授权的程序访问到磁盘上被标记为“已删除”的内容,所以增加了初始化环节,其实就是擦除磁盘上标记为“已删除”的数据。
这个擦除过程就是把磁盘上对应的区块给写成零。写零这个过程就跟往磁盘里写数据一样,磁盘的写入性能决定了写零的速度。
比如迅雷要下载一个1000MB的文件,那么Windows就会初始化1000MB的磁盘空间,磁盘的写入性能是100MB/s,那么可知Windows对磁盘完成初始化需要10秒。
这10秒内,磁盘的写入性能将会100%被占用,导致磁盘繁忙,电脑卡顿。而且此时迅雷是无法向磁盘的这个区块写入任何数据的,也就导致迅雷没有任何下载速度。
解决这个问题的关键点,就是要找出一种方法,让迅雷申请磁盘空间时具有管理员权限。
解决方案A:
迅雷为了解决这个问题,首先想到的解决方案是每次启动迅雷都申请管理员权限。
UAC提示框
但是,让用户每次启动迅雷都弹一个UAC的提示框,体验实在太差。何况很多用户启动迅雷只是为了打开下载好的文件,并不进行下载。这种死板的做法就被否了。
解决方案B:
这时,我们有个比较熟悉Windows的开发想到,Windows的系统服务是可以直接获得管理员权限的,迅雷创建一个系统服务,专门用来帮忙申请磁盘空间不就好了吗?
于是迅雷就开发了“XLServicePlatform”服务,当迅雷需要申请大于100MB的磁盘空间时,就通过这个服务进行申请。
这样一来,就在不弹出UAC提示框的前提下,把问题解决了。
问题再现:
但是最近这段时间,我们发现越来越多的用户反映,用迅雷下载大文件的时候“电脑很卡、没速度、磁盘繁忙”等问题。
经过跟许多用户远程协助发现,他们的“XLServicePlatform”服务都被停止了。于是迅雷无法通过服务申请磁盘空间,导致下载大文件时,需要等待Windows初始化磁盘。
奇怪的是,用户都说自己没有手动停止过这个服务。
后来我们发现,这些用户都安装了“系统安全优化”类软件,经过我们测试发现,部分软件的“一键加速”功能会建议用户关闭“迅雷基础服务”,其实就是把“XLServicePlatform”服务停止了。。。
解决方案C:
既然很多用户的XLServicePlatform服务会被停止,那么迅雷就需要一个服务不能正常运行时的备份方案。
这个方案就是10.1.16版本上新增的“快速申请磁盘空间助手”功能,它的原理很简单,就是个独立的进程,在迅雷需要时启动它申请管理员权限,然后帮迅雷申请磁盘空间。
迅雷启动时,检测到自身不具有管理员权限,且XLServicePlatform服务没有正常运行,即判断当前需要“快速申请磁盘空间助手”帮助申请磁盘空间。但是此时并不会立刻弹出UAC提示框。
而是当迅雷需要下载大于100MB的文件时,先询问用户选择哪种申请磁盘空间的方式。
如果用户选择“快速方式”,这时才会拉起“快速申请磁盘空间助手”进程申请管理员权限(此时会弹一次UAC提示框),然后再由它帮迅雷申请磁盘空间。
这个方式虽然要弹一次UAC提示框,但是总好过方案A那种每次启动迅雷都弹,而且作为方案B的备用方案,用户体验也不算太糟糕。
谢泳臻
发表于 2019年10月14日 23:02
下载到99%就不动了0kb 有解决办法吗
强伊文
发表于 2019年10月15日 14:29
可以试试暂停再开始,如果没用的话,可以把资源的下载地址给我查一下。
没有
发表于 2019年10月14日 13:42
新版(10.1.22.558)的快速申请磁盘空间助手是在新建下载时直接弹出UAC的。假如下载的是多文件的包,在下载中退出迅雷,再次打开迅雷并继续下载时是不会再运行磁盘空间助手的。因此,剩下的文件申请空间还是会卡。这个问题一次加入很多下载时特别突出。
还发现一个可能的问题,下载一个文件,下载完成后选择“彻底删除”并选择删除文件。但磁盘空间并不会增加,直到退出迅雷。
比如,当前磁盘剩余100G,我下载一个20G的文件,下载完成后删除文件(下载中删除是否也一样请自行测试)。此时磁盘的可用空间还是80G,但磁盘文件已经不存在了。此时如果新建一个81G的文件是不成功的。怀疑是有文件句柄没有释放,请查。
强伊文
发表于 2019年10月14日 14:15
感谢反馈,我们马上验证
没有
发表于 2019年10月15日 23:58
又遇到空间占用的问题,补充下我的情景,下载了一个多文件的包。下载完后将其中的文件“移动”到其他盘。此时文件已经不在了,但空间占用还没还回去。“彻底删除”之后还是一样。只有退出迅雷空间才会增加。
情景有些特殊,但多少有些影响,请自行判断。
强伊文
发表于 2019年10月16日 10:23
好的,我们也验证一下这种情况。
黄先生
发表于 2019年10月07日 14:09
我建议加个“用户体验改进计划”的选项,用于统计下面这项数据。有些人,电脑很卡,而且只是听到迅雷很著名,就顺手下载了迅雷,但是可能半年都没下载一次大文件,而且就下载大文件才想用迅雷。我建议统计“每月使用迅雷次数”很低的人的比例。。。
主要的是,这类人,对一个迅雷的XLServicePlatform服务显得非常奢侈,就宁愿每次提示“获取管理员”,可以加个选项让用户选择!
当然,作为官方,可以把这类用户“赶尽杀绝”。或者可以认为:①电脑就不应该装多余的软件(配置高的电脑也不应该装过多的软件,就是会卡机)②配置低的电脑不配使用迅雷。
真的很建议统计下比例,保证准确度。之后再看看,是否让用户自己选择(加个选项)。
强伊文
发表于 2019年10月08日 10:19
不错的建议,不过我们目前已经做了交互上的调整,现在是在下载大于1GB以上的文件时,直接弹UAC提示。你感受一下会不会好一些。
郑伟
发表于 2019年10月04日 10:54
我好多下载的东西都下载不了,不是卡在0%就是无法下载,这是什么情况
强伊文
发表于 2019年10月08日 10:35
这个情况要看具体资源进行分析了。
曹榆华
发表于 2019年09月28日 12:06
伊文,我仔细看了两篇文章。文章有理有据条理清楚,让我改变了以前的一些误解。我发现了一个问题,很大一部分用户的不满都是因为后台进程一直残留。你说需要接管浏览器唤起,那为什么不干脆把启动权限开放呢,这样就不需要留存进程间接唤起,有需要的时候其他程序能够直接唤起。为了安全考虑,防止恶意唤起。可以搞一个初始程序,当接到唤起时启动,辨别是否为恶意程序。是,就留存记录,拒绝该程序的唤起权限。否,再启动迅雷的主程序。完成工作后自行停止。
强伊文
发表于 2019年10月08日 10:55
很高兴看到这篇文章起到澄清误解的作用,不过我没明白你说的“启动权限开放”具体是指什么?
感悟
发表于 2019年09月26日 22:14
我也是好几个 任务都到了99.99%,有没有解决办法?Qq ;6649105xx
强伊文
发表于 2019年09月27日 15:42
好,我加你看一下
闫鹏飞
发表于 2019年08月23日 19:15
能不能把【搜索下载记录】这个功能放到显眼位置
强伊文
发表于 2019年08月26日 14:23
按快捷键Ctrl+F也可以调出搜索下载记录功能。
李先生
发表于 2019年08月31日 16:59
现在有四个任务都到了99.99%,有没有解决办法?
强伊文
发表于 2019年09月04日 18:08
我加你QQ看一下吧
vain
发表于 2019年08月20日 19:49
每次都要选择传统方式太操蛋,任务和文件列表越改越小,
逸风之狐
发表于 2019年08月15日 08:47
请把每次升级之后都自动打开的开机启动关掉再说,不要告诉我你们连个升级后的配置保留都做不出来。。。
另外'申请磁盘空间'居然没有‘总是记住’的选项。。。
强伊文
发表于 2019年08月16日 14:35
“开机自动启动”对于提升P2P加速效果很有帮助,能让大家下载的更快,尤其是特别依赖P2P加速的非会员用户。毕竟会员用户还有会员加速。
闫鹏飞
发表于 2019年08月24日 18:25
【“开机自动启动”对于提升P2P加速效果很有帮助】
什么原理啊
强伊文
发表于 2019年08月26日 14:22
“开机自动启动”能够有效提升同时在线的用户数,可提供上传的机会就越多。
强伊文
发表于 2019年08月16日 14:37
“总是记住”的选项,已经有规划了。
功能建议
发表于 2019年08月12日 21:50
伊文伊文,X能不能加入一个查找重复任务的功能啊,有些任务时间久了就记不清了有重复的任务添加到列表,他们bt虽然不同但是名字有很多相同或者只有个别字不同。
能不能查找任务的相似性,把相似的任务列出来方便我们清理。
强伊文
发表于 2019年08月13日 09:56
什么情况下会下载文件相同,但任务名不同的任务呢?
wa’r’du’s’f’x’g’c’k’h’v’l’k’j’h’j’h’g’dASDzfxfhcgjkhjghfgdfs
发表于 2019年08月13日 21:17
同一部番剧或者漫画之前下载480的版本后来BD出了添加了同样的一部作品但是是新的任务名字基本相同可能只有少数描述的字不同比如早期任务720P/AVC/MP4/AAC后期任务H.265 10Bit 2160P.
他们是同一部作品的不同版本。
强伊文
发表于 2019年08月14日 10:59
这个使用场景太小了。。。
wa’r’du’s’f’x’g’c’k’h’v’l’k’j’h’j’h’g’dASDzfxfhcgjkhjghfgdfs
发表于 2019年08月13日 21:19
不是文件相同,是同一部作品,不同版本任务。
战神123
发表于 2019年08月10日 23:54
这个文章要不就是居心叵测,要不就是产品设计能力极度欠缺,迅雷只是一个下载软件,在需要下载东西的时候用下,一开机就启动一个后台服务,最招人讨厌了,如果真的是功能需要,在需要下载东西的时候打开迅雷的时机启动下服务,退出迅雷的时候把服务停止了,这勉强可以接受,实际上迅雷做的是一开机就启动后台服务,退出迅雷后,这后台服务不退出,文章里写了一大堆,试图狡辩,混淆视听,其实这个服务只是为了达到开机自动启动的目的,好找时机唤起迅雷的启动,打开迅雷才有可能用迅雷里面的哪些套路和弹窗广告来挣钱,以及在后台p2p做种,长时间耗着用户的电脑资源以节省迅雷公司的成本支出,最终是为了利益罢了。如果真想解决微软写入0的问题,方案多了去了,文章中的abc看起来都是脑子一团浆糊堪称脑残级的方案,多想一些,微软为什么有这个uac的安全控制,迅雷绕过uac是在绕过什么安全风险,其实是访问到用户隐私数据的权限,理由说的再好,真实目的,只有自己知道了
强伊文
发表于 2019年08月12日 10:23
XLServicePlatform服务还会负责初始化迅雷的驱动层浏览器接管功能,如果不开机启动,就无法实现接管浏览器的下载请求的目的了。
你说我们“居心叵测、试图狡辩、混淆视听”,可有证据?
你所谓的“方案多了去了”,具体有哪些方案,可以说出来让大家评评看啊?
tan0334
发表于 2019年08月14日 02:49
你快点回去睡吧,写个软文被揭穿还那么多辩驳。道理很简单,一个下载工具,要什么后台?
强伊文
发表于 2019年08月14日 10:53
为什么要有服务,文章已经解释的很清楚。至于你所谓的“道理”,不知道是哪来的?谁规定下载工具不能有服务了?
大宝
发表于 2019年08月16日 12:51
快速申请磁盘空间说白了是应对WIN10越来越严格的权限管理,有了管理员权限可以方便做很多事 (广告弹窗 开机启动 安装流氓插件),国产软件都一个样,用户是否安全 是否方便根本不是迅雷考虑的事,一个太监非要元帅权限,有点安全意识的人都会反对
强伊文
发表于 2019年08月16日 14:39
“广告弹窗”不需要管理员权限就能实现。
“开机启动、安装流氓插件”在安装时就能做,不需要等到下载的时候。
搞阴谋论也得专业点吧?
91199
发表于 2019年08月12日 19:41
强烈支持。那个垃圾的“DownloadSDKServer”讨厌死了!!!!!!!!!
强伊文
发表于 2019年08月12日 19:51
亲,“DownloadSDKServer”是下载引擎的进程。。。
utop
发表于 2019年08月10日 22:52
我选择关闭UAC…
云海逸仙
发表于 2019年08月10日 14:44
只需要启动的时候获取一次UAC就好,很正常,没必要把步骤弄那么多,还有,一个下载工具要什么后台服务啊??工具的原则就是,点开就用,用完就关。没事挂个后台?QQ?传递消息?
强伊文
发表于 2019年08月12日 10:14
你能接受每次启动都弹UAC,不代表大多数用户能接受。Windows既然提供了“服务”这个功能,凭什么下载工具就不能有?有“服务”的工具大把好吗?
110110111000
发表于 2019年08月09日 16:53
一个下载软件要后台服务做什么?绕过微软的安全控制UAC做什么?这个后台服务在用户退出迅雷后如果会自动退出,优化软件们又有什么残留进程可优化?有本事回到几年前纯洁的迅雷,去掉那些乌七八糟强加给使用迅雷下载的人的“增值服务”,哪里会有什么卡…
强伊文
发表于 2019年08月09日 17:55
你没仔细看文章吧?
110110111000
发表于 2019年08月09日 20:05
看过了,试图绕过微软的安全策略(不知道要干什么坏事),也自己亲自试了下,运行迅雷的时候,不会停止这个服务,迅雷退出后,360加速球里会列出来有残留的进程,这文章乍一看似乎有道理,但是骗不过有脑子的人。
强伊文
发表于 2019年08月12日 10:09
看得出你对迅雷有偏见,没有任何证据,就已经认为迅雷要干坏事了。。。所谓有脑子的人就是这样吗?
运行迅雷的时候不会停止只是暂时不停止。迅雷基础服务一旦被360清理掉,后续是无法再次运行的,除非重新安装迅雷。
23333
发表于 2019年08月09日 11:33
大数字保持禁用XLServicePlatform其实很合理呢。应该强烈禁用此服务才对。
因为XLServicePlatform服务有小动作,加载内核驱动。以前极速版还开机加载下载引擎,静默后台上传又不是没干过。
曾经的迅雷播放器挖矿,腾讯QQProtect强行推广管家,大厂也就写个道歉信那样。
强伊文
发表于 2019年08月09日 14:53
迅雷的“驱动层浏览器接管”功能,也会依赖于XLServicePlatform进行初始化,这应该就是你说的“加载内核驱动”。
迅雷对“Chrome、Edge、Firefox”等浏览器的下载请求接管,都是通过“驱动层浏览器接管”实现的,如果XLServicePlatform服务不能正常工作,那么迅雷也无法从这些浏览器中接管下载请求了。
不过现在Chrome浏览器已经有下载支持扩展了,未来我们会把该扩展移植到“Edge、Firefox”上,也许届时就不需要“驱动层浏览器接管”功能了。
毕竟“驱动层浏览器接管”功能只能实现http协议的下载请求,https协议的接管不到。而下载支持扩展都能接管到。
23333
发表于 2019年08月22日 15:35
迅雷有两个驱动,一个是XLWEP.sys接管http下载请求。
还有一个流氓XLGuard.sys,自动修复XLServicePlatform服务。
我非常反感驱动,一个windows更新就有风险蓝屏,应尽早淘汰驱动的方式。
对于修复XLServicePlatform服务,请通过“快速申请磁盘空间助手”告知重要性,并给予用户充分选择的机会。
修改XLServicePlatform服务描述,明确其功能。如“迅雷下载服务,为非管理员用户代理快速分配磁盘等高权限操作”
强伊文
发表于 2019年08月22日 18:29
就是因为XLServicePlatform服务经常被破坏,所以才做了XLGuard.sys保护它。
由于目前各家浏览器都开始用Chromium内核,所以我们目前正在搞各个浏览器的支持扩展。
加上360已经把迅雷基础服务从建议关闭列表中移出了。
未来我们会放弃驱动实现的相关功能。
强伊文
发表于 2019年08月09日 14:58
另外,你说的“静默后台上传”是迅雷极速版的下载引擎“ThunderPlatform.exe”的特性,跟XLServicePlatform服务没关系。
只不过里面都有“Platform”这个词,让有些用户误认为两者相关了。
23333
发表于 2019年08月22日 16:08
注意下静默。
极速版thunderPlatform.exe通过父进程XLServicePlatform服务静默开机自启。
用户没启动迅雷主程序,而ThunderPlatform.exe在后台消耗大量系统资源,用户不能从托盘上退出,只能通过360一键加速。
–>用户想玩游戏,卡了。360告诉我,迅雷下载引擎正在占用网络磁盘CPU,我在托盘没找到迅雷,没看到退出X等按键。–>用户心理:辣鸡迅雷又在偷偷摸摸运行,我永远喜欢360,以后谁再说360的坏话,我打得你妈都不认识。
啦啦啦
发表于 2019年08月07日 15:35
我选择去服务里启动
强伊文
发表于 2019年08月07日 18:09
嗯,能启动当然更好,不过有再次被停止的可能。而且还有一些情况下服务会被破坏,导致启动不了服务。
lwttai
发表于 2019年08月18日 01:58
看着是SetFileValidData?好像有暴露磁盘原始数据的风险吧
另外我这干净环境怎么服务列表里没看到有迅雷的服务啊233
强伊文
发表于 2019年08月19日 16:31
应该不是吧,之前有个用户就建议过用这个API,但是下载引擎的开发说并不合适。
没有这个服务?你用的是破解版吗?
没有
发表于 2019年10月14日 19:20
IDA了一下,就是用的SetFileValidData,这个函数好像叫
StandardCreateFileAndSetFileSize:
CreateFileW
SetFilePointerEx
SetFileValidData
999
发表于 2019年08月06日 22:59
大数字能改才怪,除非交保护费/斜眼笑