请问如何通过C++程序来下载windows系统补丁并且安装

如题,我现在需要将检测出来的本机没有安装的系统补丁下载并安装,这个程序使用C++写的,不知道如何下载补丁这个操作,哪位知道给小弟说一下

13个回答

图片说明

caozhy
贵阳老马马善福专业维修游泳池堵漏防水工程 回复github_37567324: 可以通过wus获取
一年多之前 回复
github_37567324
RuningPigNO1 现在最关键的问题是 指定补丁编号下载的话,微软的下载地址没办法得到,您说的这个是在知道下载地址以后,不是我想要的结果
一年多之前 回复

装一个VS,全选就好了,反正用得上

wodexinhao
wodexinhao 好吧,好人做到底,帮你找到了下载地址,http://www.catalog.update.microsoft.com/home.aspx 这里是可以直接搜索补丁编号,然后就可以获取到下载地址了,不要说都提供给你了,还不行啊,如果真不行只有帮你到底了,哈哈
一年多之前 回复
github_37567324
RuningPigNO1 what ?
一年多之前 回复

你的意思是你想自己用C++语言实现一个windows补丁更新的功能,类似于360安全卫等软件的系统补丁更新功能?如果是的话,那你可以看看window更新API,就是用来检测系统更新补丁的API,可以直接实现该功能,https://www.cnblogs.com/appleseeker/archive/2007/07/13/817430.html
还可以利用WMI实现系统补丁检测https://blog.csdn.net/darkread/article/details/8064449
当然你可以可以首先获取到补丁名称类似于,kb什么什么的,然后自己实现一个在网络搜索该补丁的功能,搜索到补丁地址,然后根据地址进行下载

wodexinhao
wodexinhao 你在更新的时候,就是从服务器下载数据,这个时候用抓包软件抓取数据包,里面有服务器和下载地址等信息
一年多之前 回复
wodexinhao
wodexinhao 回复github_37567324: 你可以用windows本身的功能更新补丁,更新的同时用抓包软件抓取数据包,里面有服务器等信息,然后你自己构造数据包发送到服务器地址就可以实现下载了,这个补丁官方有,其他地方也有,你也可以用现有的补丁修复软件来启动更新补丁,然后抓包看看他的下载地址,构造数据包进行下载即可,这个很简单的,你试试
一年多之前 回复
github_37567324
RuningPigNO1 首先您完全理解了我的用意,您的建议也非常的好,需要更新的补丁信息现在可以获取到,包括补丁编号以KB打头的,现在就是不知道微软的补丁下载地址,没办法通过我的程序进行下载
一年多之前 回复

用WMI获取操作系统补丁信息 示例代码 https://download.csdn.net/download/ljx269919845/4400864
Windows Update Agent API 检查系统补丁安装情况的函数 https://blog.csdn.net/aasmfox/article/details/8015524

Windows Update Agent API https://msdn.microsoft.com/en-us/library/aa387099.aspx 这些应该够你用了

好吧,好人做到底,帮你找到了下载地址,http://www.catalog.update.microsoft.com/home.aspx 这里是可以直接搜索补丁编号,然后就可以获取到下载地址了,不要说都提供给你了,还不行啊,如果真不行只有帮你到底了,哈哈
图片说明

wodexinhao
wodexinhao 还有什么疑问你可以私信我交流
一年多之前 回复
wodexinhao
wodexinhao 这里无法显示完整url,你翻看第二页里面有完整地址,你只需要替换这个id就可以了,不需要发送刚刚那个数据包了,不是任何地址都是直接静态的写在网页上面的,你直接找href= 来获取地址是错误的做法,可能有些网页直接可以从这里查找到地址,更多的是需要你构造数据包获取
一年多之前 回复
wodexinhao
wodexinhao http://download.windowsupdate.com/c/msdownload/update/software/secu/2018/04/pciclearstalecache_275ee12e503f3d6b89d3f725fa950c8973f20d2d.exe 275ee12e503f3d6b89d3f725fa950c8973f20d2d 把这个ID换成相应的id就可以了,这个是最重的下载地址
一年多之前 回复
wodexinhao
wodexinhao 已帮你弄好,数据包格式,和截图都有了,这回会了吧,再不会只有帮你写源代码了
一年多之前 回复
wodexinhao
wodexinhao 你直接从网页上面是获取不到的,很多网页数据是通过ajax动态传输的,当然直接查看源代码是获取不到的,你需要用抓包软件抓取数据包,然后构造数据包进行获取,估计都是以json格式返回的
一年多之前 回复
github_37567324
RuningPigNO1 我把搜索返回的数据拿到以后 对应的连接地址是这样的,不知道怎么获取了
一年多之前 回复
github_37567324
RuningPigNO1 我在琢磨一下吧,谢谢您了
一年多之前 回复
wodexinhao
wodexinhao 难道是要写好源代码给你?如果你需要的话,可以抽空给你写
一年多之前 回复
wodexinhao
wodexinhao 回复github_37567324: 打个比方说,这就相当于微软打好补丁,然后放在自己的服务器上,你需要什么补丁,当然是向他的补丁存放的服务器发送请求,你如说你是要名字为kbxxxx的补丁,就问服务器这个补丁放在哪里,问完服务器告诉你下载地址,你根据下载地址下载补丁,我都已经把所有资料都给你找好了,补丁地址也给你了,这么久没回复,因为你已经做好了
一年多之前 回复
wodexinhao
wodexinhao 回复github_37567324:是的,你看看之前的回复,已经说了好多遍了,地址也找出来给你了,都这么久了,你还没完成?
一年多之前 回复
github_37567324
RuningPigNO1 您的意思是通过爬取网页的形式获取下载地址么?
一年多之前 回复

图片说明

我看过了,返回的数据里面,有补丁对应的ID信息,根据这个ID构造地址就可以了,比如你这个截图里面的,





2018-04 适用于基于 x64 的系统的 Windows Server 2008 R2 月度安全质量汇总(KB4093118)


Windows Server 2008 R2

安全更新程序

2018/4/23

n/a

218.9 MB
229571048







2018-04 适用于基于 Itanium 的系统的 Windows Server 2008 R2 月度安全质量汇总(KB4093118)


Windows Server 2008 R2

安全更新程序

2018/4/23

n/a

112.5 MB
117944179


                                    里面的id 看到没有,你这个补丁有6个版本,自然里面有6个id,到你这一步就可以获取到id信息了,下一步就是根据id构造数据包就可以获取到相应的下载地址了,看截图

图片说明

共13条数据 1 尾页
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问