Windows自动更新API (4)

前几篇文章讲述了如何查看更新软件,这篇讲述如何下载更新及安装

下载前,先要确定是否有更新,然后确定下载哪些更新,当然也可以下载全部更新(这时候类似于XP的盗版更新补丁就能避免下载安装)。

涉及到UpdateSearcherClass,ISearchResult,UpdateDownloaderClass,UpdateInstallerClass类
在下载点用UpdateSearcherClass的实例开始搜索,将搜索结果放到ISearchResult中。
然后实例化一个UpdateDownloaderClass对象,将搜索结果给UpdateDownloaderClass实例对象
调用该实例的Download方法就开始下载了。该方法不是异步方法,所以会直到下载完才执行下面的方法。
安装:
实例化一个UpdateInstallerClass类,将搜索结果给该实例后,然后调用Install方法,就可以安装了。

在调查中,机器环境是vista,当系统的自动更新开启并下载时,用自己写的程序更新完,系统的自动更新程序不会有任何反应。

参考代码:
 1 None.gif public   void  UpdateDownload()
 2 ExpandedBlockStart.gifContractedBlock.gif dot.gif {
 3InBlock.gif    WUApiLib.UpdateSearcherClass upSearch = new WUApiLib.UpdateSearcherClass();
 4InBlock.gif
 5InBlock.gif    if( upSearch.Online )
 6ExpandedSubBlockStart.gifContractedSubBlock.gif    dot.gif{
 7InBlock.gif        WUApiLib.ISearchResult resSearch = upSearch.Search("IsInstalled = 0");
 8InBlock.gif
 9InBlock.gif        WUApiLib.UpdateDownloaderClass upDownload = new WUApiLib.UpdateDownloaderClass();
10InBlock.gif        WUApiLib.UpdateInstallerClass upInstall = new WUApiLib.UpdateInstallerClass();
11InBlock.gif
12InBlock.gif        upDownload.Updates = resSearch.Updates;
13InBlock.gif
14InBlock.gif        System.Windows.Forms.MessageBox.Show("Start Download");
15InBlock.gif
16InBlock.gif        if (upDownload.Updates.Count > 0)
17ExpandedSubBlockStart.gifContractedSubBlock.gif        dot.gif{
18InBlock.gif            upDownload.Download();
19ExpandedSubBlockEnd.gif        }

20InBlock.gif
21InBlock.gif        System.Windows.Forms.MessageBox.Show("Start Install");
22InBlock.gif
23InBlock.gif        upInstall.Updates = upDownload.Updates;
24InBlock.gif
25InBlock.gif        if(upInstall.Updates.Count > 0)
26ExpandedSubBlockStart.gifContractedSubBlock.gif        dot.gif{
27InBlock.gif            upInstall.Install();
28ExpandedSubBlockEnd.gif        }

29InBlock.gif
30InBlock.gif        System.Windows.Forms.MessageBox.Show("Install Ok");
31ExpandedSubBlockEnd.gif    }

32ExpandedBlockEnd.gif}

转载于:https://www.cnblogs.com/appleseeker/archive/2007/07/22/827365.html

Win10 VS2013 ************************************************ * BOOL GetDiskSpaceInfo(LPCSTR pszDrive * 功能 根据输入的驱动器,获取磁盘总容量 * 空闲空间、簇数量等磁盘信息 * 参数 驱动器根路径,比如“D:\”。 ************************************************ * void GetTime() * 功能 获取并显示本地与系统时间 ************************************************ * void GetLang() * 功能 获取并显示系统的默认语言 ************************************************ * void ShowVersionInfo() * 功能 获取并显示系统版本信息 ************************************************ * void ShowSystemInfo() * 功能 获取并显示硬件相关信息 ************************************************ *void GetFolders() * 功能 获取系统目录等信息 ************************************************ *void WINAPI EnumProcess1() * 功能 调用EnumProcess遍历进程 * 并调用ListProcessModules1函数和 * ListProcessThreads函数列举模块 * 和线程 ************************************************ * VOID ListProcessModules1( DWORD dwPID ) * 功能 调用EnumProcessModules函数 * 列举和显示进程加载的模块 * * 参数 DWORD dwPID 进程PID ************************************************ * VOID ListProcessThreads( DWORD dwPID ) * 功能 调用Thread32First和Thread32Next * 显示一个进程的线程 * * 参数 DWORD dwPID 进程PID ************************************************ * VOID PrintError( LPTSTR msg ) * 功能 打印出错信息 * * 参数 LPTSTR msg ************************************************ * void GetDriveInfo( LPCTSTR lpRootPath) * 功能 返 回 指 定 驱 动 器 的 类 型。 * * 参数 lpRootPathName ************************************************ * void GetSystemMetric(int nIndex) * 功能 返 回 显 示 器 分 辨 率。 * * 参数 ************************************************ * void GetKeyboardInfo() * 功能 返回键盘类型。 * * 参数 *************************************************
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值