我想從最新Windows 8.1 Update(KB 2919355)是否安裝了C#應用程序如何以編程方式檢測是否是Windows 8.1更新安裝
我一直沒能在任何微軟的找到任何檢測網站或通過谷歌,指出如何可以做到這一點。
謝謝!
我想從最新Windows 8.1 Update(KB 2919355)是否安裝了C#應用程序如何以編程方式檢測是否是Windows 8.1更新安裝
我一直沒能在任何微軟的找到任何檢測網站或通過谷歌,指出如何可以做到這一點。
謝謝!
我在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
第6個KB號碼不指向[有效的KB頁面](http://support.microsoft.com/kb/2949621),也許ReadMe錯誤,它顯示KB上最後一個包的不同編號KB2919355更新的頁面(但是[訪問它](http://support.microsoft.com/kb/2934018)將您重定向到KB2919355頁面)。 –
@ScottChamberlain:來自MSDN的更新版本包含'Windows8.1-KB2949621-v2-x64.msu' Google暗示其中一個可能只適用於服務器SKU。 –
該更新實際上是「彙總」或其他單獨較小更新的集合。如果您轉到Knowledge base page for the update並向下滾動到「文件信息」,您可以看到更新實際上是以下其他更新的組合。
然後,您將需要或者檢查上面列出的所有更新的應用或應用單個主更新。我不知道怎麼一個人做,在C#中,而是通過命令行你可以通過控制檯命令
wmic qfe get hotfixid | find "KB2919355"
有趣的是,我們的名單不匹配。另外,從鏈接頁面:「您也可以使用DISM命令來驗證安裝或卸載更新。」 –
@BenVoigt DISM需要一個提升的提示,WMI方法可以在不提升的情況下做到這一點(我刪除了關於使用DISM檢查DLL版本的部分,或者WMI是一種更好的方法)。 –
這可能是罪魁禍首做到這一點:
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)源文件英寸
本文給出了所需清單內容的模式細節。
他並不試圖檢測8.1 vs 8.0,但8.1與補丁和8.1沒有補丁的區別。 (不過補丁可能會或可能不會改變(我沒有檢查)Windows版本號中的內部版本號,所以它可能仍然有效) –
它不會顛覆System.Environment.OSVersion中的修訂版嗎? –
[This](http://stackoverflow.com/questions/922132/use-c-sharp-to-interact-with-windows-update)可能會有所幫助。 – Nathan
至少您可以在某些系統文件中檢查日期,大小或版本資源。至少在它被YAWU覆蓋之前(又一次Windows更新) –