Skip to content

Microsoft Windows Desktop Runtime 7.0.20 (x64)

Installation

  • Arch: x64

Registry changes

HKLM\SOFTWARE\dotnet\Setup\InstalledVersions\x64
  • sharedhost
    • Version: 7.0.20
    • Path: C:\Program Files\dotnet\
HKLM\Software\Microsoft\Windows\CurrentVersion\Uninstall
  • {221BB52A-B763-4C9D-AA62-4B0B6C9AAD62}
    • DisplayName: Microsoft .NET Runtime - 7.0.20 (x64)
    • Version: 944782160
    • UninstallString: MsiExec.exe /X{221BB52A-B763-4C9D-AA62-4B0B6C9AAD62}
    • DisplayVersion: 56.80.15184
  • {72C29BED-666F-4E5E-BC49-DF44C890742E}
    • DisplayName: Microsoft Windows Desktop Runtime - 7.0.20 (x64)
    • Version: 944782221
    • UninstallString: MsiExec.exe /X{72C29BED-666F-4E5E-BC49-DF44C890742E}
    • DisplayVersion: 56.80.15245
HKLM\Software\WOW6432Node\dotnet\Setup\InstalledVersions\x64\sharedfx
  • Microsoft.NETCore.App
    • 7.0.20: 1
  • Microsoft.WindowsDesktop.App
    • 7.0.20: 1

File paths

  • C:\Program Files\dotnet\shared\Microsoft.WindowsDesktop.App\7.0.20
  • C:\Program Files\dotnet\shared\Microsoft.NETCore.App\7.0.20

Intune

Detection Rules

Rule type: Detection script

Custom detection script
[string]$RegistryPath = "HKLM:\SOFTWARE\WOW6432Node\dotnet\Setup\InstalledVersions\x64\sharedfx"
[version]$MinVer = '7.0.20'
[array]$runtimes = $null

if (Test-Path -Path $RegistryPath -PathType Container) {
    [array]$runtimes = Get-ChildItem -Path "$RegistryPath" |
    Where-Object PSChildName -eq "Microsoft.WindowsDesktop.App" |
    Select-Object -ExpandProperty Property |
    Where-Object { ($_ -like "7.0.*") -and ($_ -ge $MinVer) }
}
if ($null -eq $runtimes) {
    Write-Error "Application not installed, minimum version not met."
    exit 1

}
Write-Output "Application detected, minimum version is met."

Tests

  • Application installs on Autopilot VMs
  • Application is detected in Intune