Il client Servizi Desktop remoto non può connettersi al server Host sessione Desktop remoto dopo la modifica dell'indirizzo IP del server

Questo articolo fornisce una soluzione a un problema per cui il client Servizi Desktop remoto non è in grado di connettersi al server Host sessione Desktop remoto.

Si applica a: Windows Server 2012 R2
Numero KB originale: 2844958

Importante

In questo articolo sono contenute informazioni relative alla modifica del Registro di sistema. Prima di modificare il Registro di sistema, assicurarsi di eseguirne una copia di backup e di sapere come ripristinarlo in caso di problemi. Per altre informazioni su come eseguire il backup, ripristinare e modificare il Registro di sistema, fare clic sul numero dell'articolo della Microsoft Knowledge Base seguente:
322756 Come eseguire il backup e il ripristino del Registro di sistema in Windows

Sintomi

Considerando lo scenario seguente:

  • È stata configurata una distribuzione standard di Servizi Desktop remoto in Windows Server 2012. La distribuzione contiene server Host sessione Desktop remoto, un server Gestore connessione Desktop remoto e un server Accesso Web Desktop remoto.
  • È possibile creare una raccolta di sessioni accessibile dai client Servizi Desktop remoto tramite il sito Web accesso Web Desktop remoto.
  • Gli indirizzi IP di tutti i server Host sessione Desktop remoto nella raccolta di sessioni vengono modificati.

In questo scenario, i client Servizi Desktop remoto non possono connettersi alla raccolta di sessioni e durante la connessione viene visualizzato il messaggio di errore seguente:

Le credenziali non funzionavano.

Causa

Questo problema si verifica a causa di una voce obsoleta del Registro di sistema nella sottochiave seguente:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\ClusterSettings

La SessionDirectoryRedirectionIP voce del Registro di sistema archivia l'indirizzo IP di un server Host sessione Desktop remoto assegnato al momento della creazione della distribuzione di Servizi Desktop remoto. Anche se l'indirizzo IP del server Host sessione Desktop remoto viene modificato, l'indirizzo IP nell'impostazione Gestore connessione Desktop remoto non viene aggiornato. I client RDS non possono quindi connettersi alla raccolta di sessioni.

Risoluzione

Avviso

L'errata modifica del Registro di sistema tramite l'editor o un altro metodo può causare seri problemi. che potrebbero richiedere la reinstallazione del sistema operativo. Microsoft non è in grado di garantire la soluzione di tali problemi. La modifica del Registro di sistema è a rischio e pericolo dell'utente.

Per risolvere questo problema, eliminare la SessionDirectoryRedirectionIP voce del Registro di sistema della sottochiave del Registro di sistema seguente da ogni server Host sessione Desktop remoto nella raccolta di sessioni:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\ClusterSettings

In alternativa, è possibile eseguire lo script di PowerShell seguente. Questo script elimina la voce del Registro di sistema da ogni server Host sessione Desktop remoto nella distribuzione.

Import-Module RemoteDesktop

# Delete the Registry Key for all machine name specified in $RemoteMachine
Function DeleteRegistryKey($RemoteMachine)
{
 $reg = [Microsoft.Win32.RegistryKey]::OpenRemoteBaseKey('LocalMachine', $RemoteMachine)

# connect to the needed key :  
 $regKey= $reg.OpenSubKey("System\\CurrentControlSet\\Control\\Terminal Server\\ClusterSettings", $true )

# and delete the SessionDirectoryRedirectionIP subkey, if it exists
 foreach ($key in $regKey.GetValueNames())
 { 
 if ($key -eq "SessionDirectoryRedirectionIP")
 {
 $regKey.DeleteValue($key)  
 Write-Host "Machine : "$RemoteMachine
 }
 }
}

# Get the list of collections on the machine
$RdSessionCollections = Get-RDSessionCollection  

if ($RdSessioncollections -eq $null)
{
 Write-Host "No RDSH Session Collections"
 return
}

foreach ($SessionCollection in $RdSessionCollections)
{
 Write-Host "Collection Name : " $SessionCollection.CollectionName

# get list of RDSH Servers in the collection
 $RdSessionHosts = Get-SessionHost -CollectionName $SessionCollection.CollectionName
 foreach ($SessionHost in $RdSessionHosts)
 {
 Write-Host "SessionHost : "$SessionHost.SessionHost

# Delete the regkey on this server
 DeleteRegistryKey($SessionHost.SessionHost)
 }
}