问题标签 [wuapi]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1238 浏览

windows - CreateUpdateDownloader 如何知道要下载哪些文件?

如何CreateUpdateDownloader下载文件?我问是因为我的系统缺少 4 KB。

我通过迭代脚本中的更新集合获得了 4 个缺失 KB 的标题。

当我将该集合分配给一个CreateUpdateDownloader时,我只在 C:\Windows\SoftwareDistribution\Download 中找到 1 KB。

任何想法为什么它没有下载其他 3 KB?是的,我现在只是想扫描和下载——试图通过观察它的运行来了解它是如何工作的。我稍后会安装,因为我想调整其中的一些。

代码如下:

0 投票
1 回答
619 浏览

windows - WUA API 找不到更新

代码示例:

我正在尝试以编程方式卸载 WMF3,但在尝试使用 wusa.exe 时不断出现错误,

CbsClient::CbsClient.00110: 未能创建 CBS 会话实例
CbsClient::CbsClient.00127: 退出并显示错误代码 0X80040154(未注册类)
UninstallWorker.00664: 开始搜索
CbsClient::OpenPackageByKB.00268: CBS 会话未初始化.
CbsClient::OpenPackageByKB.00320:退出,错误代码为 0X8000ffff(灾难性故障)
UninstallWorker.00667:失败:KB2506143 的 OpenPackageByKB()
UninstallWorker.00799:退出,错误代码为 0X8000ffff(灾难性故障)
RebootIfRequested.01446:未安排重新启动。IsRunWizardStarted:0,IsRebootRequired:0,RestartMode:1由于错误 2147549183“灾难性故障”(命令行:“ ”)
而无法卸载 Windows 更新C:\windows\System32\wusa.exe /uninstall /kb:2506143 /quiet /norestart /log:C:\log.evt
wWinMain.01962: 卸载更新失败;错误:0X8000ffff,灾难性故障。命令行:C:\windows\System32\wusa.exe /uninstall /kb:2506143 /quiet /norestart /log:C:\log.evt
wWinMain.01998:退出,错误代码为 0X8000ffff(灾难性故障)

所以我正在追求使用 WUA API。上面的代码片段给了我一个$Null回报,但我可以使用Get-Hotfix -ID KB2506143orGet-WmiObject -Class Win32_QuickFixEngineering -Filter 'HotFixID="KB2506143"'来查找更新。

这个问题类似,但是在找到补丁后尝试卸载补丁时访问被拒绝,而我的问题是:我如何首先找到补丁?

我不确定补丁是如何应用的,所以如果我在找到它后遇到同样的问题,至少我有这个解决方案。

0 投票
1 回答
1761 浏览

c# - 确定 Windows 更新分类

从 Windows 更新 COM 库 (WUAPILib) 我可以访问IUpdate接口,但是我看不到任何方法可以用来获取更新分类(关键、重要、可选)以与 Windows 更新相同的方式对更新进行分组控制面板中的 UI 可以。

0 投票
1 回答
2016 浏览

c# - 使用 WUApiLib 脱机安装 Windows 更新

我正在通过使用 Microsoft 网站上提供的 wsusscn2.cab 文件来寻找自动安装 Windows 更新的帮助。

我试图实现的设置有点奇怪,这就是为什么我认为使用 Google 找不到太多帮助的原因。

我有 8 台运行 Windows 7 SP1 的机器无法连接到 Internet,因此我正在从 Microsoft 下载 wsusscn2.cab 文件,该文件显然包含所有已发布更新的列表以及实际更新/修补程序本身。

到目前为止,我的代码允许我使用 WUApiLib 读取 .cab 文件并从中建立,哪些更新未安装在机器上。这当前返回的列表包含大约 149 个可用但未安装的更新。

检查每个更新/修补程序的 .IsDownloaded() 函数时,它返回 False 并且错误代码为“orcFailed”。

正如我所说的那样,这是我所能得到的最接近的设置,谷歌并没有为我提供很多帮助,因为大多数人都提到了 Windows Server 上的 WSUS 之类的东西,这是不可能的,或者其他在线解决方案也是我不能做的事情。

这是我到目前为止的代码片段,我是这个库的新手,这是我的第一个主要 C# 项目,所以任何帮助将不胜感激,因为我觉得我此刻正在碰壁。有人还可以确认更新是否实际存储在 .cab 文件中,因为我尝试提取它们以查看里面的内容,但无济于事?

非常感谢!

0 投票
1 回答
167 浏览

c++ - 如何使用来自 wuapi.h 的 IUpdate5

我想使用 IUpdate5 接口,但无论如何我都找不到实例化它。我目前正在使用 IUpdate,它可以完美运行,但是如何使用这些接口的版本化版本,例如 IUpdateSession3、IUpdateSearcher3、IUpdate4、IUpdate5 等。我尝试从 IUpdate* 直接转换为 IUpdate5*,但我收到了这样的错误。

它在 if(auto res = update->get_RebootRequired(&rebootRequired)) 行引发内存错误。错误是“0xC0000005:访问冲突读取位置 0x00000008”。

0 投票
0 回答
843 浏览

c# - 为 Windows 更新安装重要更新

我可以使用它进行可选更新。但是重要的更新是“失败的”。你能帮忙吗?

0 投票
1 回答
238 浏览

wuapi - WUAPI:列出不同 Windows 版本的更新

使用Windows 更新代理 API,可以列出 Windows 更新。例如:

由于上面我正在查询已安装和未安装的更新,因此我假设结果列出了我当前 Windows 版本/构建的所有可用更新。那是对的吗?

我现在的意思是:我也可以查询不同的版本吗?
例如,列出来自 Windows 10 系统的 Windows Server 2016 更新。

这个想法是轻松配置开发人员 Windows 虚拟机,采用 ISO 和最近的累积更新。

0 投票
1 回答
1144 浏览

c# - 有没有办法下载所有 Windows 更新?

我想创建一个应用程序,它应该用于在没有互联网连接的情况下更新计算机。为了解决这个问题,软件首先从微软下载了当前的 wsusscn2.cab。然后应用程序应该从 Microsoft 下载所有可能的更新文件。两者(wsusscn2.cab 和更新)都必须存在于远程计算机(例如 USB 记忆棒)上,并且程序会检查需要在系统上安装哪些更新。我的问题是第二步,应用程序应该下载所有更新文件。

我已经尝试读出 wsusscn2.cab 文件,但我真的找不到任何更新的下载 URI。我还尝试使用 IUpdateSearcher 类在文件中搜索更新,但它仅根据我的系统查找更新(我想要所有可能的更新)。

正如我所说,搜索功能的实际输出是基于我的系统。我希望能够获得所有更新。

0 投票
0 回答
123 浏览

c++ - ISearchJob->CleanUp 卡住了

我正在通过 WUAPI 异步搜索丢失的补丁。我已经声明了一个 ISearchJob 对象(https://docs.microsoft.com/en-us/windows/win32/api/wuapi/nn-wuapi-isearchjob)。如果我从 WaitForSingleObject 函数收到超时,我调用 RequestAbort() 然后执行 ISearchJob 对象的 CleanUp()。但是,当我执行清理时,有时需要超过 15 分钟才能完成。你知道为什么吗?有什么解决方案吗?预先感谢您的帮助!

稍后编辑:这是线程函数,COM 用 COINIT_MULTITHREADED 初始化。

我已经查看了停止异步 ISearchJob 的正确方法,如果我在 RequestAbort 之后立即调用 EndSearch,问题类似,但有时仍需要 15 分钟才能完成。如果我只调用 RequestAbort(),程序将在搜索完成时崩溃(可能是 5 秒到 15 分钟或更长时间)

0 投票
1 回答
241 浏览

c++ - 如何在离线时检测当前的 Windows 更新状态?

我将使用 wuapi 检测我的操作系统更新状态。

使用 IUpdateSearcher::Search 我可以做到,但是这个功能只能在线使用。

离线时我也使用 IUpdateServiceManager::AddScanPackageService 函数来获取状态,但是这个函数需要 wsusscn2.cab 文件,而且这个文件太大了。

离线时是否有任何其他 wuapi 来检测 Windows 更新状态,或者是否有任何注册表或系统文件来检测它?

谢谢你的帮助...