Empêcher l’accès aux applications 16 bits
Vérifié avec Windows 11 25H2 — mis à jour le 30 juillet 2026
Pris en charge sur : Au minimum Windows Server 2003
Chemin dans la console GPO
Configuration ordinateur\Modèles d'administration\Composants Windows\Compatibilité des applications Description
Empêche ou non l’exécution du sous-système MS-DOS (ntvdm.exe) sur cet ordinateur. Ce paramètre affecte le lancement des applications 16 bits dans le système d’exploitation. Vous pouvez utiliser ce paramètre pour désactiver le sous-système MS-DOS, ce qui permettra de réduire l’utilisation des ressources et d’empêcher les utilisateurs d’exécuter des applications 16 bits. Pour exécuter toute application 16 bits ou comportant des composants 16 bits, l’exécution de ntvdm.exe doit être autorisée. Le sous-système MS-DOS démarre lorsque la première application 16 bits est lancée. Lors de l’exécution du sous-système MS-DOS, toutes les applications 16 bits suivantes démarrent plus rapidement, mais l’utilisation globale des ressources du système augmente. Si vous activez ce paramètre, le sous-système MS-DOS ne peut pas être exécuté, ce qui empêche l’exécution de toutes les applications 16 bits. En outre, les applications 32 bits comportant des programmes d’installation 16 bits ou autres composants 16 bits ne peuvent pas être exécutées. Si vous désactivez ce paramètre, le sous-système MS-DOS s’exécute pour tous les utilisateurs de cet ordinateur. Si ce paramètre n’est pas configuré, le système d’exploitation utilise la stratégie locale définie par la valeur de Registre DWORD HKLM\System\CurrentControlSet\Control\WOW\DisallowedPolicyDefault. Si cette valeur n’est pas égale à 0, aucune application 16 bits ne peut s’exécuter. Si cette valeur est égale à 0, les applications 16 bits peuvent s’exécuter. Si cette valeur n’est pas spécifiée, sur Windows 10 et les versions ultérieures, le système d’exploitation lance le panneau d’assistance de l’application 16 bits pour permettre à un administrateur aux droits élevés de décider. Sur Windows 7 et les versions de niveau inférieur, le système d’exploitation autorise l’exécution des applications 16 bits. Remarque : ce paramètre n’apparaît que dans Configuration ordinateur.
Registre
Software\Policies\Microsoft\Windows\AppCompat Nom de valeur : VDMDisallowed
Activé : VDMDisallowed = 1
Désactivé : VDMDisallowed = 0
MDM / Intune (CSP)
./Device/Vendor/MSFT/Policy/Config/ADMX_AppCompat/AppCompatPrevent16BitMach Documentation Microsoft Learn Données de correspondance : Microsoft Learn (CC BY 4.0)
Générateur d'exports
BETAConfigurez l'état, la portée et les options, puis générez les sorties .reg, PowerShell, Intune et SCCM — ou ajoutez le paramètre à une collection multi-paramètres.
Ces exports écrivent le registre — ce n'est pas une GPO managée. ⓘ
Fichier .reg
Windows Registry Editor Version 5.00
; Exported from gporais.com
; Policy: Empêcher l’accès aux applications 16 bits
; State: Enabled
; Supported on: Au minimum Windows Server 2003
[HKEY_LOCAL_MACHINE\Software\Policies\Microsoft\Windows\AppCompat]
"VDMDisallowed"=dword:00000001 Autres formats (PowerShell, Intune, SCCM)
PowerShell
# Exported from gporais.com
# Policy: Empêcher l’accès aux applications 16 bits
# State: Enabled
# Supported on: Au minimum Windows Server 2003
$path = 'HKLM:\Software\Policies\Microsoft\Windows\AppCompat'
New-Item -Path $path -Force | Out-Null
Set-ItemProperty -Path $path -Name 'VDMDisallowed' -Value 1 -Type DWord Intune XML
OMA-URI: ./Device/Vendor/MSFT/Policy/Config/ADMX_AppCompat/AppCompatPrevent16BitMach
Data type: String
Value:
<enabled/> Intune Remediation
# === Detection script ===
# Exported from gporais.com
# Policy: Empêcher l’accès aux applications 16 bits
# State: Enabled
# Supported on: Au minimum Windows Server 2003
function Test-RegistryValue {
param(
[Parameter(Mandatory = $true)][string]$Path,
[Parameter(Mandatory = $true)][string]$Name,
[object]$Expected,
[ValidateSet('String', 'DWord', 'MultiString')][string]$Kind = 'String',
[switch]$Absent
)
try {
$item = Get-ItemProperty -LiteralPath $Path -Name $Name -ErrorAction Stop
} catch {
return $Absent.IsPresent
}
if ($Absent.IsPresent) { return $false }
$actual = $item.$Name
if ($Kind -eq 'DWord') { return ([int64]$actual) -eq ([int64]$Expected) }
if ($Kind -eq 'MultiString') {
$actualValues = @($actual)
$expectedValues = @($Expected)
if ($actualValues.Count -ne $expectedValues.Count) { return $false }
for ($i = 0; $i -lt $expectedValues.Count; $i++) {
if ([string]$actualValues[$i] -ne [string]$expectedValues[$i]) { return $false }
}
return $true
}
return [string]$actual -eq [string]$Expected
}
$checks = @(
(Test-RegistryValue -Path 'HKLM:\Software\Policies\Microsoft\Windows\AppCompat' -Name 'VDMDisallowed' -Expected 1 -Kind DWord)
)
if ($checks -notcontains $false) {
Write-Output 'Compliant'
exit 0
}
Write-Output 'Non-compliant'
exit 1
# === Remediation script ===
# Exported from gporais.com
# Policy: Empêcher l’accès aux applications 16 bits
# State: Enabled
# Supported on: Au minimum Windows Server 2003
$path = 'HKLM:\Software\Policies\Microsoft\Windows\AppCompat'
New-Item -Path $path -Force | Out-Null
Set-ItemProperty -Path $path -Name 'VDMDisallowed' -Value 1 -Type DWord Scripts SCCM
# Exported from gporais.com
# Policy: Empêcher l’accès aux applications 16 bits
# State: Enabled
# Supported on: Au minimum Windows Server 2003
# SCCM Configuration Item guidance:
# Create a Configuration Item of type "Setting: Script".
# Discovery script: use the Detection script below.
# Remediation script: use the Remediation script below.
# Compliance rule: the Discovery script output equals 'Compliant'.
# === Detection script ===
# Exported from gporais.com
# Policy: Empêcher l’accès aux applications 16 bits
# State: Enabled
# Supported on: Au minimum Windows Server 2003
function Test-RegistryValue {
param(
[Parameter(Mandatory = $true)][string]$Path,
[Parameter(Mandatory = $true)][string]$Name,
[object]$Expected,
[ValidateSet('String', 'DWord', 'MultiString')][string]$Kind = 'String',
[switch]$Absent
)
try {
$item = Get-ItemProperty -LiteralPath $Path -Name $Name -ErrorAction Stop
} catch {
return $Absent.IsPresent
}
if ($Absent.IsPresent) { return $false }
$actual = $item.$Name
if ($Kind -eq 'DWord') { return ([int64]$actual) -eq ([int64]$Expected) }
if ($Kind -eq 'MultiString') {
$actualValues = @($actual)
$expectedValues = @($Expected)
if ($actualValues.Count -ne $expectedValues.Count) { return $false }
for ($i = 0; $i -lt $expectedValues.Count; $i++) {
if ([string]$actualValues[$i] -ne [string]$expectedValues[$i]) { return $false }
}
return $true
}
return [string]$actual -eq [string]$Expected
}
$checks = @(
(Test-RegistryValue -Path 'HKLM:\Software\Policies\Microsoft\Windows\AppCompat' -Name 'VDMDisallowed' -Expected 1 -Kind DWord)
)
if ($checks -notcontains $false) {
Write-Output 'Compliant'
exit 0
}
Write-Output 'Non-compliant'
exit 1
# === Remediation script ===
# Exported from gporais.com
# Policy: Empêcher l’accès aux applications 16 bits
# State: Enabled
# Supported on: Au minimum Windows Server 2003
$path = 'HKLM:\Software\Policies\Microsoft\Windows\AppCompat'
New-Item -Path $path -Force | Out-Null
Set-ItemProperty -Path $path -Name 'VDMDisallowed' -Value 1 -Type DWord Vous construisez une collection multi-paramètres ? Ajoutez ce paramètre et générez des exports combinés (.reg, PowerShell, GPO).