【4】Windows自动更新API (4)

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

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

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

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

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

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

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

32}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
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、付费专栏及课程。

余额充值