2014-04-28 91 views
4

我想從最新Windows 8.1 Update(KB 2919355)是否安裝了C#應用程序如何以編程方式檢測是否是Windows 8.1更新安裝

我一直沒能在任何微軟的找到任何檢測網站或通過谷歌,指出如何可以做到這一點。

謝謝!

+0

它不會顛覆System.Environment.OSVersion中的修訂版嗎? –

+0

[This](http://stackoverflow.com/questions/922132/use-c-sharp-to-interact-with-windows-update)可能會有所幫助。 – Nathan

+0

至少您可以在某些系統文件中檢查日期,大小或版本資源。至少在它被YAWU覆蓋之前(又一次Windows更新) –

回答

0

我在MSDN下載之前安裝了Windows 8.1 Update,它在Windows更新上生效。它是作爲一系列帶有自述文件的MSU文件分發的。 ReadMe中的更新列表可能很有用,如果您選擇檢測它們的存在。

Windows 8.1, Windows Server 2012 R2, Windows RT 8.1 Update 

Recommended Install Order 
1. KB2919442 
2. KB2919355 
3. KB2932046 
4. KB2937592 
5. KB2938439 
6. KB2949621 
+0

第6個KB號碼不指向[有效的KB頁面](http://support.microsoft.com/kb/2949621),也許ReadMe錯誤,它顯示KB上最後一個包的不同編號KB2919355更新的頁面(但是[訪問它](http://support.microsoft.com/kb/2934018)將您重定向到KB2919355頁面)。 –

+0

@ScottChamberlain:來自MSDN的更新版本包含'Windows8.1-KB2949621-v2-x64.msu' Google暗示其中一個可能只適用於服務器SKU。 –

2

該更新實際上是「彙總」或其他單獨較小更新的集合。如果您轉到Knowledge base page for the update並向下滾動到「文件信息」,您可以看到更新實際上是以下其他更新的組合。

  • KB2919442
  • KB2919355
  • KB2932046
  • KB2937592
  • KB2938439
  • KB2934018

然後,您將需要或者檢查上面列出的所有更新的應用或應用單個主更新。我不知道怎麼一個人做,在C#中,而是通過命令行你可以通過控制檯命令

wmic qfe get hotfixid | find "KB2919355" 
+0

有趣的是,我們的名單不匹配。另外,從鏈接頁面:「您也可以使用DISM命令來驗證安裝或卸載更新。」 –

+0

@BenVoigt DISM需要一個提升的提示,WMI方法可以在不提升的情況下做到這一點(我刪除了關於使用DISM檢查DLL版本的部分,或者WMI是一種更好的方法)。 –

0

這可能是罪魁禍首做到這一點:

Operating system version changes in Windows 8.1 and Windows Server 2012 R2

表現

在Windows 8.1中,GetVersion(Ex)API已被棄用。這意味着雖然您仍然可以調用API,但如果您的應用程序沒有專門針對Windows 8.1,則會獲得Windows 8版本控制(6.2.0.0)。

解決方案

爲了面向Windows 8.1,你需要或者包括應用程序清單或包括_NT_TARGET_VERSION = $(_NT_TARGET_VERSION_LATEST)源文件英寸

本文給出了所需清單內容的模式細節。

+2

他並不試圖檢測8.1 vs 8.0,但8.1與補丁和8.1沒有補丁的區別。 (不過補丁可能會或可能不會改變(我沒有檢查)Windows版本號中的內部版本號,所以它可能仍然有效) –

相關問題