Ne pas utiliser les dossiers temporaires par session
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\Services Bureau à distance\Hôte de la session Bureau à distance\Dossiers temporaires Description
Ce paramètre de stratégie vous permet d’empêcher les services Bureau à distance de créer des dossiers temporaires spécifiques à la session. Vous pouvez utiliser ce paramètre de stratégie pour désactiver la création de dossiers temporaires distincts sur un ordinateur distant pour chaque session. Par défaut, les services Bureau à distance créent un dossier temporaire distinct pour chaque session active d’un utilisateur sur un ordinateur distant. Ces dossiers temporaires sont créés sur l’ordinateur distant dans un dossier Temp sous le dossier du profil de l’utilisateur et leur nom correspond à l’ID de session. Si vous activez ce paramètre de stratégie, les dossiers temporaires par session ne sont pas créés. En revanche, pour toutes les sessions sur l’ordinateur distant, les fichiers temporaires d’un utilisateur sont stockés dans un dossier Temp commun situé sous le dossier de profil de l’utilisateur sur l’ordinateur distant. Si vous désactivez ce paramètre de stratégie, des dossiers temporaires par session sont toujours créés, même si l’administrateur du serveur en décide autrement. Si vous ne configurez pas ce paramètre de stratégie, des dossiers temporaires par session sont créés, à moins que l’administrateur n’en décide autrement.
Registre
SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services Nom de valeur : PerSessionTempDir
Activé : PerSessionTempDir = 0
Désactivé : PerSessionTempDir = 1
MDM / Intune (CSP)
./Device/Vendor/MSFT/Policy/Config/ADMX_TerminalServer/TS_TEMP_PER_SESSION 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: Ne pas utiliser les dossiers temporaires par session
; State: Enabled
; Supported on: Au minimum Windows Server 2003
[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services]
"PerSessionTempDir"=dword:00000000 Autres formats (PowerShell, Intune, SCCM)
PowerShell
# Exported from gporais.com
# Policy: Ne pas utiliser les dossiers temporaires par session
# State: Enabled
# Supported on: Au minimum Windows Server 2003
$path = 'HKLM:\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services'
New-Item -Path $path -Force | Out-Null
Set-ItemProperty -Path $path -Name 'PerSessionTempDir' -Value 0 -Type DWord Intune XML
OMA-URI: ./Device/Vendor/MSFT/Policy/Config/ADMX_TerminalServer/TS_TEMP_PER_SESSION
Data type: String
Value:
<enabled/> Intune Remediation
# === Detection script ===
# Exported from gporais.com
# Policy: Ne pas utiliser les dossiers temporaires par session
# 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 NT\Terminal Services' -Name 'PerSessionTempDir' -Expected 0 -Kind DWord)
)
if ($checks -notcontains $false) {
Write-Output 'Compliant'
exit 0
}
Write-Output 'Non-compliant'
exit 1
# === Remediation script ===
# Exported from gporais.com
# Policy: Ne pas utiliser les dossiers temporaires par session
# State: Enabled
# Supported on: Au minimum Windows Server 2003
$path = 'HKLM:\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services'
New-Item -Path $path -Force | Out-Null
Set-ItemProperty -Path $path -Name 'PerSessionTempDir' -Value 0 -Type DWord Scripts SCCM
# Exported from gporais.com
# Policy: Ne pas utiliser les dossiers temporaires par session
# 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: Ne pas utiliser les dossiers temporaires par session
# 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 NT\Terminal Services' -Name 'PerSessionTempDir' -Expected 0 -Kind DWord)
)
if ($checks -notcontains $false) {
Write-Output 'Compliant'
exit 0
}
Write-Output 'Non-compliant'
exit 1
# === Remediation script ===
# Exported from gporais.com
# Policy: Ne pas utiliser les dossiers temporaires par session
# State: Enabled
# Supported on: Au minimum Windows Server 2003
$path = 'HKLM:\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services'
New-Item -Path $path -Force | Out-Null
Set-ItemProperty -Path $path -Name 'PerSessionTempDir' -Value 0 -Type DWord Vous construisez une collection multi-paramètres ? Ajoutez ce paramètre et générez des exports combinés (.reg, PowerShell, GPO).