首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >C# WUApiLib:即使找到更新,也无法安装0x80240024的更新

C# WUApiLib:即使找到更新,也无法安装0x80240024的更新
EN

Stack Overflow用户
提问于 2020-09-24 23:42:03
回答 1查看 99关注 0票数 0

我遵循了在this site上找到的说明,这是我研究Stack Overflow and found this question时找到的。然而,我似乎不明白为什么我的代码命中catch块。我在IInstallationResult行有一个中断,代码命中此行,然后转到catch,声明0x80240024 (There are no updates,尽管肯定有可用的更新,并且我在文本框中列出了它们。

这里我漏掉了什么?

代码语言:javascript
运行
复制
using System;
using System.Windows.Forms;
using WUApiLib;

namespace TEST.DetectWindowsUpdate
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void GetUpdates(bool downloadUpdates, bool installUpdates)
        {

            UpdateSession uSession = new UpdateSession();
            IUpdateSearcher uSearcher = uSession.CreateUpdateSearcher();
            UpdateCollection updatesToInstall = new UpdateCollection();
            UpdateDownloader downloader = uSession.CreateUpdateDownloader();
            IUpdateInstaller installer = uSession.CreateUpdateInstaller();

            uSearcher.Online = true;

            try
            {
                ISearchResult sResult = uSearcher.Search("IsInstalled=0 And Type='Software'");
                lblUpdateCount.Text = sResult.Updates.Count.ToString();

                foreach (IUpdate update in sResult.Updates)
                {
                    txtUpdatesList.AppendText("Title: " + update.Title + Environment.NewLine);
                    txtUpdatesList.AppendText("IsInstalled: " + update.IsInstalled.ToString() + Environment.NewLine);
                    txtUpdatesList.AppendText("Downloaded: " + update.IsDownloaded.ToString() + Environment.NewLine);
                    txtUpdatesList.AppendText("IsMandatory: " + update.IsMandatory.ToString() + Environment.NewLine);

                    txtUpdatesList.AppendText(Environment.NewLine);

                    if (downloadUpdates)
                    {
                        if (update.IsDownloaded == false)
                        {
                            do
                            {
                                downloader.Updates.Add(update);
                                downloader.Download();
                            }
                            while (update.IsDownloaded == false);

                            if (update.IsDownloaded == true)
                            {
                                updatesToInstall.Add(update);
                            }
                        }
                        else
                        {
                            updatesToInstall.Add(update);
                        }
                    }

                    if (installUpdates)
                    {
                        installer.Updates = updatesToInstall;

                        IInstallationResult installationRes = installer.Install();

                        for (int i = 0; i < updatesToInstall.Count; i++)
                        {
                            txtUpdatesList.AppendText("Installing " + updatesToInstall[i].Title + "...");
                            if (installationRes.GetUpdateResult(i).HResult == 0)
                            {
                                txtUpdatesList.AppendText("INSTALL SUCCESS FOR " + updatesToInstall[i].Title);
                            }
                            else
                            {
                                txtUpdatesList.AppendText("INSTALL FAIL FOR " + updatesToInstall[i].Title);
                            }
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine("Error: " + ex.Message + ": " + ex.HelpLink);
            }
        }

        private void btnGetUpdates_Click(object sender, EventArgs e)
        {
            
            base.OnLoad(e);
            txtUpdatesList.Clear();
            GetUpdates(false, false);
        }

        private void btnInstallUpdates_Click(object sender, EventArgs e)
        {
            base.OnLoad(e);
            txtUpdatesList.Clear();
            GetUpdates(true, true );
        }
    }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-09-25 00:11:25

事实证明这是一个特权问题。我以管理员身份运行,它运行正常。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64049865

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档