AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / computer / 问题 / 1618905
Accepted
S. Brottes
S. Brottes
Asked: 2021-01-20 02:40:17 +0800 CST2021-01-20 02:40:17 +0800 CST 2021-01-20 02:40:17 +0800 CST

检查 windows 更新文件完整性

  • 772

我必须经常更新离线 Windows 系统。

所以我在 Windows 网站上下载更新文件 (KB) 并在系统上运行该文件。

我想知道是否有推荐的方法来检查 Windows 更新文件 (kb) 的完整性。我的目的是确保文件是正确的,并且在应用之前没有以某种方式进行修改。

所以我需要像官方 MD5 签名这样的东西作为参考值来与下载文件的签名进行比较,但我找不到类似的东西。

windows updates
  • 3 3 个回答
  • 2240 Views

3 个回答

  • Voted
  1. Best Answer
    user1686
    2021-01-20T03:05:05+08:002021-01-20T03:05:05+08:00

    所有 Windows 更新文件(.exe、.msi、.msu、.cab)都使用 Authenticode 进行签名——数据散列和数字签名被嵌入到文件中,因此 Windows 可以自行验证。

    • 通过 PowerShell:

      Get-AuthenticodeSignature foo.cab | Format-List
      
    • 通过 Cmd(仅当您安装了Windows 10 SDK时):

      signtool verify /v /pa foo.msi
      
    • 通过图形用户界面:

      1. 右键单击文件,选择“属性”→“数字签名”。
      2. 从列表中选择一个签名,然后单击“详细信息”。

    在所有三种情况下,请确保签名有效并且来自“Microsoft 代码签名 PCA”(链接到 Microsoft 根证书颁发机构)。

    请注意,MD5 或 SHA1 哈希本身不是签名。签名是通过哈希和密钥(例如 Authenticode 签名证书)的组合创建的。

    • 14
  2. user1263795
    2021-01-20T03:38:41+08:002021-01-20T03:38:41+08:00

    如果您通过 Microsoft 更新目录下载了更新文件:

    在此处输入图像描述

    您将在文件名中看到 MSU 包的 SHA1:

    在此处输入图像描述

    蓝色突出显示的字符串是它的 SHA-1 ( Secure Hash Algorithm-1 ) 值,它总是 40 个字符长,如果文件内容被修改,这个值将会改变。

    您可以使用此方法检查文件是否真实,您可以使用 PowerShell 来执行此操作;

    首先,打开 PowerShell:

    Win+ R>>类型PowerShell>> Ctrl+ Shift+Enter

    然后你需要你的文件的完整路径和文件名,在这个例子中,文件被下载到默认的下载文件夹,也就是C:\Users\USERNAME\Downloads文件夹,在 PowerShell 中你可以使用这个变量:$home来表示C:\Users\Username(你的用户配置文件)文件夹。

    您可以使用Get-Filehashcmdlet 获取文件的哈希值,并通过使用-eq运算符将​​其与文件名中的哈希值进行检查,如果结果是true则文件是好的。如果它返回false,则文件已损坏。

    我会给你这个例子来更好地描述这个方法:

    (get-filehash -path "$home\downloads\windows10.0-kb4592438-x86_95758bd6e2c3a4a98a19efaa4056213531f84f5c.msu" -algorithm SHA1).hash -eq "windows10.0-kb4592438-x86_95758bd6e2c3a4a98a19efaa4056213531f84f5c.msu".split("_")[1].substring(0,40)
    

    它返回true,表示我的文件没有损坏。

    使用时,只需将文件名和文件路径替换为您要查看的文件的真实名称和路径即可。然后你就可以走了。

    • 5
  3. Xeнεi Ξэnвϵς
    2021-01-20T04:19:02+08:002021-01-20T04:19:02+08:00

    Суомынона的回答是正确的,我只想补充一点,您可以将代码包装在一个函数中:

    function Check-Update {
    Param(
      [Parameter(Mandatory=$True, Valuefrompipeline=$True)] [Validatenotnullorempty()] [String]$Path 
    )
    $IsGood=$false
    
    if ($(Test-Path $Path) -and $Path.EndsWith(".msu")) {
        $SHA1 = [System.IO.Path]::GetFileNameWithoutExtension($Path).Split("_")[1]
        $Hash = (Get-FileHash -Path $path -Algorithm SHA1).Hash
        $IsGood=$($SHA1 -eq $Hash)
        Switch ($IsGood)
        {
            $true {Write-Host "Your update file: $path is NOT corrupted"}
            $false {Write-Host "Your update file: $path IS corrupted"}
        }
    } else {
        Write-Error -Message "Update file: $path doesn't exist as a valid update file"
        }
    }
    

    将该函数粘贴到工作中的 PowerShell 会话中,然后您可以通过调用该函数来检查更新文件的完整性,例如:

    Check-Update "$home\downloads\windows10.0-kb4592438-x86_95758bd6e2c3a4a98a19efaa4056213531f84f5c.msu"
    

    如果一切正常,它将返回:

    Your update file: C:\Users\Estranger\downloads\windows10.0-kb4592438-x86_95758bd6e2c3a4a98a19efaa4056213531f84f5c.msu is NOT corrupted
    

    希望我的回答对你有所帮助;问候。

    • 3

相关问题

  • 如何在 Windows Precision 触摸板上禁用鼠标加速?

  • 批量重命名图像文件集

  • Python 的“pass”参数的批处理等价物是什么?

  • 在 Windows 上与 Docker 守护进程通信

  • 资源管理器侧面板中的桌面外壳快捷方式

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    如何减少“vmmem”进程的消耗?

    • 11 个回答
  • Marko Smith

    从 Microsoft Stream 下载视频

    • 4 个回答
  • Marko Smith

    Google Chrome DevTools 无法解析 SourceMap:chrome-extension

    • 6 个回答
  • Marko Smith

    Windows 照片查看器因为内存不足而无法运行?

    • 5 个回答
  • Marko Smith

    支持结束后如何激活 WindowsXP?

    • 6 个回答
  • Marko Smith

    远程桌面间歇性冻结

    • 7 个回答
  • Marko Smith

    子网掩码 /32 是什么意思?

    • 6 个回答
  • Marko Smith

    鼠标指针在 Windows 中按下的箭头键上移动?

    • 1 个回答
  • Marko Smith

    VirtualBox 无法以 VERR_NEM_VM_CREATE_FAILED 启动

    • 8 个回答
  • Marko Smith

    应用程序不会出现在 MacBook 的摄像头和麦克风隐私设置中

    • 5 个回答
  • Martin Hope
    Saaru Lindestøkke 为什么使用 Python 的 tar 库时 tar.xz 文件比 macOS tar 小 15 倍? 2021-03-14 09:37:48 +0800 CST
  • Martin Hope
    CiaranWelsh 如何减少“vmmem”进程的消耗? 2020-06-10 02:06:58 +0800 CST
  • Martin Hope
    Jim Windows 10 搜索未加载,显示空白窗口 2020-02-06 03:28:26 +0800 CST
  • Martin Hope
    v15 为什么通过电缆(同轴电缆)的千兆位/秒 Internet 连接不能像光纤一样提供对称速度? 2020-01-25 08:53:31 +0800 CST
  • Martin Hope
    andre_ss6 远程桌面间歇性冻结 2019-09-11 12:56:40 +0800 CST
  • Martin Hope
    Riley Carney 为什么在 URL 后面加一个点会删除登录信息? 2019-08-06 10:59:24 +0800 CST
  • Martin Hope
    zdimension 鼠标指针在 Windows 中按下的箭头键上移动? 2019-08-04 06:39:57 +0800 CST
  • Martin Hope
    jonsca 我所有的 Firefox 附加组件突然被禁用了,我该如何重新启用它们? 2019-05-04 17:58:52 +0800 CST
  • Martin Hope
    MCK 是否可以使用文本创建二维码? 2019-04-02 06:32:14 +0800 CST
  • Martin Hope
    SoniEx2 更改 git init 默认分支名称 2019-04-01 06:16:56 +0800 CST

热门标签

windows-10 linux windows microsoft-excel networking ubuntu worksheet-function bash command-line hard-drive

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve