本文章对以前几篇文章中不足的以及错误的地方,进行修改。希望对大家有所帮助。
在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://www.cnblogs.com/Images/OutliningIndicators/None.gif)
3
session.WebProxy.Address = @"**********";
4
session.WebProxy.PromptForCredentials(sender, "Input Your Passport!");
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
2
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
3
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
4
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
PromptForCredentials方法,弹出系统对话框,然后输入用户名密码后,自动将其给代理类。
1
WUApiLib.IUpdateSearcher upSearch = session.CreateUpdateSearcher();
2
WUApiLib.IUpdateDownloader upDownload = session.CreateUpdateDownloader();
3
WUApiLib.IUpdateInstaller2 upInstall = (WUApiLib.IUpdateInstaller2)session.CreateUpdateInstaller();
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
2
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
3
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
最后,如果你使用的D版的操作系统,那么自动更新首先会要求你更新WGA,在验证通过的情况下才能更新后续程序,使用自己写的程序来更新能够更方便的去更新很多Xp下自动更新无法更新的部分,如驱动。
我自己也在做相关的软件,等做完后与大家分享。