如何確認是否已安裝 MS17-010


注意事項


這篇知識庫文章是依現狀提供,並且不會取代透過正常更新管道提供的取代資料。 您可以在安全性更新導覽和其他附屬工具找到在下列資料之後提供的取代資訊。

摘要


 
查看本文適用的產品
 
安全性更新 MS17-010 可解決 Windows Server Message Block (SMB) v1 中數個弱點。 WannaCrypt 勒索軟體利用了其中一個屬於 MS17-010 更新的弱點。 未安裝 MS17-010 的電腦因數種惡意程式碼而提高風險。 本文提供數個可快速偵測電腦是否已進行過更新的方法。
 
 

方法 1: 根據已安裝的知識庫編號進行檢查

請使用下表查看是否安裝任何列出的更新 (標示為「未包含 MS17-010 修補程式」的更新除外)。 如果已安裝任一更新,表示已安裝 MS17-010。

表 1/2: Windows 7 SP1 和更新版本。 下列彙總套件 KB 包含修正程式 (「4 月僅限安全性 4B」欄中的更新除外)。 下面每個 KB 編號都是已更新的 Srv.sys 版本號碼。

Windows 版本

僅限 3 月安全性更新 (3/14/17)

3 月每月彙總套件
(2017/3/14)

3 月每月彙總套件預覽
(2017/3/21)

4 月僅限
安全性更新
(2017/4/11)

4 月每月彙總套件
(2017/4/11)

4 月每月彙總套件預覽
(2017/4/18)

5 月僅限安全性更新
(2017/5/9)

5 月每月彙總套件
(2017/5/9)

下載連結

Windows 7 SP1 和 Windows Server 2008 R2 SP1

4012212
6.1.7601.23689

4012215
6.1.7601.23689

4012218
6.1.7601.23689

4015546
未包含 MS17-010 修補程式

4015549
6.1.7601.23689

4015552
6.1.7601.23689

4019263
6.1.7601.23762

4019264
6.1.7601.23762

https://support.microsoft.com/zh-tw/help/4009469

Windows 2012

4012214
6.2.9200.22099

4012217
6.2.9200.22099

4012220
6.2.9200.22099

4015548
未包含 MS17-010 修補程式

4015551
6.2.9200.22099

4015554
6.2.9200.22099

4019214
6.2.9200.22137

4019216
6.2.9200.22137

https://support.microsoft.com/zh-tw/help/4009471

Windows 8.1 和 Windows Server 2012 R2

4012213
6.3.9600.18604

4012216
6.3.9600.18604

4012219
6.3.9600.18604

4015547 未包含 MS17-010 修補程式

4015550
6.3.9600.18604

4015553
6.3.9600.18619

4019213
6.3.9600.18655

4019215
6.3.9600.18655

https://support.microsoft.com/zh-tw/help/4009470

Windows 10 1507 版

4012606
10.0.10240.17319

4016637
10.0.10240.17319

-

-

4015221
10.0.10240.17319

-

-

4019474 10.0.10240.17394

https://support.microsoft.com/zh-tw/help/4000823

Windows 10 1511 版  

4013198
10.0.10586.839

4016636
10.0.10586.839

-

-

4015219
10.0.10586.839

-

-

4019473
10.0.10586.916

https://support.microsoft.com/zh-tw/help/4000824

Windows 10 和 Windows Server 2016

4013429
10.0.14393.953

4016635
10.0.14393.953

-

-

4015217
10.0.14393.953

-

-

4019472
10.0.14393.1198

https://support.microsoft.com/zh-tw/help/4000825

 

表 2/2: 延續 2017 年 5 月和 6 月更新。

Windows 版本

5 月每月彙總套件預覽

(2017/5/16)

6 月僅限安全性更新

(2017/6/13)

6 月每月彙總套件

(2017/6/13)

下載連結

Windows 7 和 Server 2008 R2

4019265
6.1.7601.23762

 

4022722

4022168
6.1.7601.23762

https://support.microsoft.com/zh-tw/help/4009469

Windows Server 2012

4019218
6.2.9200.22137

4022718

4022724
6.2.9200.22137

https://support.microsoft.com/zh-tw/help/4009471

Windows 8.1 和 Windows Server 2012 R2

4019217
6.3.9600.18655

4022717

4022720
6.3.9600.18688

https://support.microsoft.com/zh-tw/help/4009470

Windows 10 1507 版

-

-

4032695

https://support.microsoft.com/zh-tw/help/4000823

Windows 10 1511 版

-

-

4032693

https://support.microsoft.com/zh-tw/help/4000824

Windows 10 版本 1607 和 Windows Server 2016

-

-

4022723
10.0.14393.1198

https://support.microsoft.com/zh-tw/help/4000825

 

表 2: 其他 Windows 版本。 將 KB 4012598 當做安全性更新使用。

Windows 版本

KB 編號和
更新的 Srv.sys 版本

下載連結

Windows Server 2003 SP2

4012598
5.2.3790.6021

Windows Server 2003 SP2 x64

Windows Server 2003 SP2 x86

Windows XP

4012598
5.1.2600.7208

Windows XP SP2 x64

Windows XP SP3 x86

Windows XP Embedded SP3 x86

Windows Vista SP2

4012598
GDR:6.0.6002.19743
LDR:6.0.6002.24067

Windows Vista Service Pack 2

Windows Vista x64 Edition Service Pack 2

Windows Server 2008 SP2

4012598
GDR:6.0.6002.19743
LDR:6.0.6002.24067

32 位元系統的 Windows Server 2008 Service Pack 2

x64 型系統的 Windows Server 2008 Service Pack 2

Itanium 系統的 Windows Server 2008 Service Pack 2

Windows 8

4012598
6.2.9200.22099

Windows 8 x86Windows 8 x64

 

表 3: 其他包含此修正程式的更新。

Windows 8.1 和 Windows Server 2012 R2

發行日期

KB 編號

支援頁面

2017 年 3 月 21 日

4012219

2017 年 3 月 21 日 - KB4012218(每月彙總套件預覽)

2017 年 4 月 18 日

4015553

2017 年 4 月 18 日 - KB4015553(每月彙總套件預覽)

2017 年 5 月 16 日

4019217

2017 年 5 月 16 日 - KB4019217(每月彙總套件預覽)

2017 年 6 月 27 日 4022720 2017 年 6 月 27 日 — KB4022720 (每月彙總套件預覽)
 
Windows Server 2012

發行日期

KB 編號

支援頁面

2017 年 3 月 21 日

4012220

2017 年 3 月 21 日 - KB4012220(每月彙總套件預覽)

2017 年 4 月 18 日

4015554

2017 年 4 月 18 日 - KB4015554(每月彙總套件預覽)

2017 年 5 月 16 日

4019218

2017 年 5 月 16 日 - KB4019218(每月彙總套件預覽)

2017 年 6 月 27 日 4022721 2017 年 6 月 27 日 — KB4022721 (每月彙總套件預覽)
 
Windows 7 SP1 和 Windows Server 2008 R2 SP1

發行日期

KB 編號

支援頁面

2017 年 3 月 21 日

4012218

2017 年 3 月 21 日 - KB4012218(每月彙總套件預覽)

2017 年 4 月 18 日

4015552

2017 年 4 月 18 日 - KB4015552(每月彙總套件預覽)

2017 年 5 月 16 日

4019265

2017 年 5 月 16 日 - KB4019265(每月彙總套件預覽)

2017 年 6 月 27 日 4022168 2017 年 6 月 27 日 — KB4022168 (每月彙總套件預覽)


方法 2: 根據 %systemroot%\system32\drivers\srv.sys 檔案版本進行檢查

請使用下表查看 %systemroot%\system32\drivers\srv.sys 的檔案版本。 如果檔案版本等於或大於所列的版本,表示 MS17-010 已安裝。

Windows 版本

已更新的最小 Srv.sys 版本

Windows XP

5.1.2600.7208

Windows Server 2003 SP2

5.2.3790.6021

Windows Vista
Windows Server 2008 SP2

GDR:6.0.6002.19743、LDR:6.0.6002.24067

Windows 7
Windows Server 2008 R2

6.1.7601.23689

Windows 8
Windows Server 2012

6.2.9200.22099

Windows 8.1
Windows Server 2012 R2

6.3.9600.18604

Windows 10 TH1 v1507

10.0.10240.17319

Windows 10 TH2 v1511

10.0.10586.839

Windows 10 RS1 v1607
Windows Server 2016

10.0.14393.953


方法 3: 根據 WMI 和 Windows PowerShell 進行檢查

WMI 和 Windows PowerShell 可用來判斷是否已安裝 MS17-010 修正程式。

WMI 命令

若要尋找指定的 KB 編號,請開啟提升權限的命令提示字元視窗,然後執行下列命令:

wmic qfe get hotfixid | find "KB1234567"

注意事項

  • 在這個命令中,將 <KB1234567> 取代為實際的 KB 編號。
  • 使用 & 符號字元可以搜尋多個更新。 例如,執行下列命令:

    wmic qfe get hotfixid | find "KB4012212" & wmic qfe get hotfixid | find "KB4012215" & wmic qfe get hotfixid | find "KB4015549"

PowerShell 命令

若要在本機系統中檢查,請執行下列系統管理 PowerShell Cmdlet:

 get-hotfix -id KB1234567

注意事項

  • 在這個命令中,將 <KB1234567> 取代為實際的 KB 編號。
  • 使用逗號 ( , ) 可以搜尋多個更新。 例如,執行下列命令:

    get-hotfix -id KB4012212,KB4012215,KB4015549


若要檢查 Active Directory 網域或 OU 中的所有電腦,請在網域控制站執行下列系統管理 PowerShell Cmdlet:

foreach ( $n in (get-adcomputer -searchbase ‘OU=workstations,dc=contoso,dc=com’ -filter * -property * | select name )) {get-hotfix -computername $n.name -id KB1234567}


注意 您可以變更 "OU=workstations,dc=contoso,dc=com" 部分,以指向 Active Directory 網域目錄分割的根目錄,例如 "dc=contoso,dc=com" 可搜尋整個網域中的電腦。 在這個命令中,將 <KB1234567> 取代為實際的 KB 編號。

如何解決「不適用」安裝錯誤


在 Windows 8.1 或 Windows Server 2012 R2 上安裝 MS17-010 時,如果電腦未安裝先決條件的修正程式,您可能會收到下列錯誤訊息:
此更新不適用於您的電腦
若要解決這個錯誤,請依照下列步驟執行:
 
  1. 確認您在嘗試要安裝正確的更新。 若要執行這項操作,請在<方法 1>的「表 1」查看 KB 編號, 然後與您的系統版本、系統 Service Pack 層級和系統位元層級 (x64、IA64 或 x86) 相比較。
     
  2. 檢查是否有遺漏的相依性。 若是 Windows 8.1 和 Windows Server 2012 R2,請安裝下列文章列為必要的相依修正程式:
     
    • KB 2919355: Windows RT 8.1、Windows 8.1 和 Windows Server 2012 R2 更新: 2014 年 4 月
    • KB 2919442: 2014 年 3 月適用於 Windows 8.1 和 Windows Server 2012 R2 的服務堆疊更新 (機器翻譯)
    • KB 3173424: 適用於 Windows 8.1 和 Windows Server 2012 R2 的服務堆疊更新: 2016 年 7 月 12 日 (機器翻譯)
  3. 如果您無法安裝彙總套件更新,請嘗試不同的彙總套件版本。 請參閱「表 1」取得可用的更新。
     

PowerShell 指令碼


下列 Windows PowerShell 指令碼會將本機電腦上的 Srv.sys 版本,與<方法 2>表格中所列的版本做比較。

請將這個指令碼儲存至 .ps1 檔案,然後從 PowerShell 執行指令碼。 這個指令碼適用於 Windows XP 及 Windows Server 2003 和更新版本。 它需要 Windows PowerShell 2.0 或更新版本。
 
[reflection.assembly]::LoadWithPartialName("System.Version")$os = Get-WmiObject -class Win32_OperatingSystem$osName = $os.Caption$s = "%systemroot%\system32\drivers\srv.sys"$v = [System.Environment]::ExpandEnvironmentVariables($s)If (Test-Path "$v")    {    Try        {        $versionInfo = (Get-Item $v).VersionInfo        $versionString = "$($versionInfo.FileMajorPart).$($versionInfo.FileMinorPart).$($versionInfo.FileBuildPart).$($versionInfo.FilePrivatePart)"        $fileVersion = New-Object System.Version($versionString)        }    Catch        {        Write-Host "Unable to retrieve file version info, please verify vulnerability state manually." -ForegroundColor Yellow        Return        }    }Else    {    Write-Host "Srv.sys does not exist, please verify vulnerability state manually." -ForegroundColor Yellow    Return    }if ($osName.Contains("Vista") -or ($osName.Contains("2008") -and -not $osName.Contains("R2")))    {    if ($versionString.Split('.')[3][0] -eq "1")        {        $currentOS = "$osName GDR"        $expectedVersion = New-Object System.Version("6.0.6002.19743")        }     elseif ($versionString.Split('.')[3][0] -eq "2")        {        $currentOS = "$osName LDR"        $expectedVersion = New-Object System.Version("6.0.6002.24067")        }    else        {        $currentOS = "$osName"        $expectedVersion = New-Object System.Version("9.9.9999.99999")        }    }elseif ($osName.Contains("Windows 7") -or ($osName.Contains("2008 R2")))    {    $currentOS = "$osName LDR"    $expectedVersion = New-Object System.Version("6.1.7601.23689")    }elseif ($osName.Contains("Windows 8.1") -or $osName.Contains("2012 R2"))    {    $currentOS = "$osName LDR"    $expectedVersion = New-Object System.Version("6.3.9600.18604")    }elseif ($osName.Contains("Windows 8") -or $osName.Contains("2012"))    {    $currentOS = "$osName LDR"    $expectedVersion = New-Object System.Version("6.2.9200.22099")    }elseif ($osName.Contains("Windows 10"))    {    if ($os.BuildNumber -eq "10240")        {        $currentOS = "$osName TH1"        $expectedVersion = New-Object System.Version("10.0.10240.17319")        }    elseif ($os.BuildNumber -eq "10586")        {        $currentOS = "$osName TH2"        $expectedVersion = New-Object System.Version("10.0.10586.839")        }    elseif ($os.BuildNumber -eq "14393")        {        $currentOS = "$($osName) RS1"        $expectedVersion = New-Object System.Version("10.0.14393.953")        }    elseif ($os.BuildNumber -eq "15063")        {        $currentOS = "$osName RS2"        "No need to Patch. RS2 is released as patched. "        return        }    }elseif ($osName.Contains("2016"))    {    $currentOS = "$osName"    $expectedVersion = New-Object System.Version("10.0.14393.953")    }elseif ($osName.Contains("Windows XP"))    {    $currentOS = "$osName"    $expectedVersion = New-Object System.Version("5.1.2600.7208")    }elseif ($osName.Contains("Server 2003"))    {    $currentOS = "$osName"    $expectedVersion = New-Object System.Version("5.2.3790.6021")    }else    {    Write-Host "Unable to determine OS applicability, please verify vulnerability state manually." -ForegroundColor Yellow    $currentOS = "$osName"    $expectedVersion = New-Object System.Version("9.9.9999.99999")    }Write-Host "`n`nCurrent OS: $currentOS (Build Number $($os.BuildNumber))" -ForegroundColor CyanWrite-Host "`nExpected Version of srv.sys: $($expectedVersion.ToString())" -ForegroundColor CyanWrite-Host "`nActual Version of srv.sys: $($fileVersion.ToString())" -ForegroundColor CyanIf ($($fileVersion.CompareTo($expectedVersion)) -lt 0)    {    Write-Host "`n`n"    Write-Host "System is NOT Patched" -ForegroundColor Red    }Else    {    Write-Host "`n`n"    Write-Host "System is Patched" -ForegroundColor Green    }#

本文適用於:


 

  • Windows Server 2016
  • Windows 10 1607 版
  • Windows 10 1511 版
  • Windows 10 1507 版
  • Windows Server 2012 R2
  • Windows 8.1
  • Windows Server 2012
  • Windows 8
  • Windows Server 2008 R2
  • Windows 7
  • Windows Server 2008 Service Pack 2
  • Windows Vista
  • Windows Server 2003 Service Pack 2
  • Windows XP