本文章对以前几篇文章中不足的以及错误的地方,进行修改。希望对大家有所帮助。
在 Vista和Xp中,WUA有很多地方不同的,根据Xp的自动更新版本决定。最大的区别在于刚安装完Xp-sp2后,WUA的版本比较老,且很多接口中的 函数都不提供。比如:代理类,IUpdate3,IUpdateSearcher2等。所以用.net开发时要进行注意客户端是否对WUA进行更新过。基 本上最新的WUA都是v6版了。与Vista下提供的版本差别不大了。
有代理的情况:
比如公司设置代理,Xp下,就不会更新,而Vista会,因为在Vista下会弹出让用户输入代理的用户名和密码的对话框。当这种情况时,自己写的程序要搜索、下载、安装须先创建代理类,然后由代理类创建相应的操作类。
代码参考如下:
1
WUApiLib.UpdateSessionClass session
=
new
WUApiLib.UpdateSessionClass();
2![](https://i-blog.csdnimg.cn/blog_migrate/f0cd6c7f9e7ae96feae062cb48f670f0.gif)
3
session.WebProxy.Address
=
@"
**********
"
;
4
session.WebProxy.PromptForCredentials(sender,
"
Input Your Passport!
"
);
![](https://i-blog.csdnimg.cn/blog_migrate/f0cd6c7f9e7ae96feae062cb48f670f0.gif)
2
![](https://i-blog.csdnimg.cn/blog_migrate/f0cd6c7f9e7ae96feae062cb48f670f0.gif)
3
![](https://i-blog.csdnimg.cn/blog_migrate/f0cd6c7f9e7ae96feae062cb48f670f0.gif)
4
![](https://i-blog.csdnimg.cn/blog_migrate/f0cd6c7f9e7ae96feae062cb48f670f0.gif)
PromptForCredentials方法,弹出系统对话框,然后输入用户名密码后,自动将其给代理类。
1
WUApiLib.IUpdateSearcher upSearch
=
session.CreateUpdateSearcher();
2
WUApiLib.IUpdateDownloader upDownload
=
session.CreateUpdateDownloader();
3
WUApiLib.IUpdateInstaller2 upInstall
=
(WUApiLib.IUpdateInstaller2)session.CreateUpdateInstaller();
![](https://i-blog.csdnimg.cn/blog_migrate/f0cd6c7f9e7ae96feae062cb48f670f0.gif)
2
![](https://i-blog.csdnimg.cn/blog_migrate/f0cd6c7f9e7ae96feae062cb48f670f0.gif)
3
![](https://i-blog.csdnimg.cn/blog_migrate/f0cd6c7f9e7ae96feae062cb48f670f0.gif)
最后,如果你使用的D版的操作系统,那么自动更新首先会要求你更新WGA,在验证通过的情况下才能更新后续程序,使用自己写的程序来更新能够更方便的去更新很多Xp下自动更新无法更新的部分,如驱动。