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

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

图片说明

URLDownloadToFile https://baike.baidu.com/item/URLDownloadToFile/2700084?fr=aladdin

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

你的意思是你想自己用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什么什么的,然后自己实现一个在网络搜索该补丁的功能,搜索到补丁地址,然后根据地址进行下载

用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 这里是可以直接搜索补丁编号,然后就可以获取到下载地址了,不要说都提供给你了,还不行啊,如果真不行只有帮你到底了,哈哈
图片说明

图片说明

我看过了,返回的数据里面,有补丁对应的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构造数据包就可以获取到相应的下载地址了,看截图

图片说明

发送这个数据包可以获取到下载地址

POST http://www.catalog.update.microsoft.com/DownloadDialog.aspx HTTP/1.1
Host: www.catalog.update.microsoft.com
Connection: keep-alive
Content-Length: 287
Cache-Control: max-age=0
Origin: http://www.catalog.update.microsoft.com
Upgrade-Insecure-Requests: 1
Content-Type: application/x-www-form-urlencoded
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.181 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8
Referer: http://www.catalog.update.microsoft.com/DownloadDialog.aspx
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9

PostData:如下

updateIDs=%5B%7B%22size%22%3A0%2C%22languages%22%3A%22%22%2C%22uidInfo%22%3A%226e3b0c6d-f716-4ac3-9059-1008067ac19b%22%2C%22updateID%22%3A%226e3b0c6d-f716-4ac3-9059-1008067ac19b%22%7D%5D&updateIDsBlockedForImport=&wsusApiPresent=&contentImport=&sku=&serverName=&ssl=&portNumber=&version=

http://download.windowsupdate.com/c/msdownload/update/software/secu/2018/04/pciclearstalecache_275ee12e503f3d6b89d3f725fa950c8973f20d2d.exe

275ee12e503f3d6b89d3f725fa950c8973f20d2d 把这个ID换成相应的id就可以了,这个是最重的下载地址

图片说明