April
1st,
2024
.NET Framework 仍然是許多現有應用程式的開發選項,特別是在伺服器應用中,因此 .NET Framework 並不會在伺服器應用程式中被 .NET 所取代。也因此,了解安裝在系統上的 .NET Framework 版本對於確保應用程序兼容性和系統安全性都至關重要,本文介紹了一種使用 PowerShell 快速檢測系統中安裝的 .NET Framework 版本的方法。
在 Windows 系統中,基本上都有 PowerShell 可以直接執行,以下的腳本是直接從 Windows 注冊表中讀取信息,分析系統中安裝的 .NET Framework 的版本,並寫成函式,以便放到共用函式庫中使用。
function Get-DotNetVersionFromRegistry {
$ndpKeyPath = "HKLM:\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full\"
$ndpKey = Get-ItemProperty -Path $ndpKeyPath -ErrorAction SilentlyContinue
if ($null -eq $ndpKey) {
return "No 4.5 or later version detected"
}
# Hashtable mapping release keys to .NET Framework versions
$versionMap = @{
533320 = "4.8.1 or later";
528040 = "4.8 or later";
461808 = "4.7.2 or later";
461308 = "4.7.1 or later";
460798 = "4.7 or later";
394802 = "4.6.2 or later";
394254 = "4.6.1 or later";
393295 = "4.6 or later";
393273 = "4.6 RC or later";
379893 = "4.5.2 or later";
378675 = "4.5.1 or later";
378389 = "4.5 or later";
}
$releaseKey = [int]$ndpKey.Release
foreach ($key in $versionMap.Keys | Sort-Object -Descending) {
if ($releaseKey -ge $key) {
return $versionMap[$key]
}
}
return "No 4.5 or later version detected"
}
# Main script execution
$version = Get-DotNetVersionFromRegistry
Write-Host ".NET Framework Version: $version"
這裡直接用了查表法,根據官方這篇文章如何:判斷安裝的 .NET Framework 版本所提供的 .NET Framework 版本 Release
值,來判斷系統中安裝的 .NET Framework 版本。
後記
如果你是要偵測 .NET Framework 1.0 到 4.0 的版本,由於這些版本的機碼位置不同,判斷方式也有差異,若有需要,可以參考下表作為參考:
Framework 版本 | 登錄子機碼 | 值 |
---|---|---|
1.0 | HKLM\Software\Microsoft\.NETFramework\Policy\v1.0\3705 |
Install REG_SZ 等於 1 |
1.1 | HKLM\Software\Microsoft\NET Framework Setup\NDP\v1.1.4322 |
Install REG_DWORD 等於 1 |
2.0 | HKLM\Software\Microsoft\NET Framework Setup\NDP\v2.0.50727 |
Install REG_DWORD 等於 1 |
3.0 | HKLM\Software\Microsoft\NET Framework Setup\NDP\v3.0\Setup |
InstallSuccess REG_DWORD 等於 1 |
3.5 | HKLM\Software\Microsoft\NET Framework Setup\NDP\v3.5 |
Install REG_DWORD 等於 1 |
4.0 用戶端設定檔 | HKLM\Software\Microsoft\NET Framework Setup\NDP\v4\Client |
Install REG_DWORD 等於 1 |
4.0 完整設定檔 | HKLM\Software\Microsoft\NET Framework Setup\NDP\v4\Full |
Install REG_DWORD 等於 1 |
參考資料: