Två personer är inloggade, en av dem ansluter företagstunneln och den andra kontots webbläsare slutar läsa in sidor som fungerade för en minut sedan. På samma maskin har även posten Byt användare försvunnit från inloggningsskärmen, så den andra personen kan inte komma tillbaka till sin egen session. Att följa detta från den andra sessionen och utåt är det snabbaste sättet att förstå det, eftersom inget i den första användarens anslutning är dolt, och inget i den andra användarens problem är mystiskt när du ser vilka objekt som delas.

Börja i sessionen som gick sönder

Gå till det andra kontots skrivbord, inte det första. Öppna en terminal där och titta på routingtabellen och resolverlistan medan den andra sessionen är ansluten. Allt du ser tillhör maskinen, inte den andra användaren, och det är den första ledtråden.

Get-NetRoute -AddressFamily IPv4 | Sort-Object RouteMetric | Select-Object -First 12 DestinationPrefix,NextHop,InterfaceAlias
Get-DnsClientServerAddress -AddressFamily IPv4 | Select-Object InterfaceAlias,ServerAddresses
Get-NetConnectionProfile | Select-Object Name,NetworkCategory,IPv4Connectivity

Om standardrutten nu pekar på tunnelgränssnittet följer den andra användarens trafik den också. Om resolverlistan har fått en privat server går deras uppslag nu någonstans de inte kan nå när tunneln faller. Inget av detta är en bugg i klienten; det är konsekvenserna av en enda delad nätverksstack.

Det tredje kommandot förklarar en andra klass av klagomål. När en adapter växlar maskinen från offentlig till privat nätverkskategori ändras brandväggsreglerna som är knutna till en profil för alla konton samtidigt, så program som tilläts på morgonen kan blockeras på eftermiddagen utan att någon rör en regel.

Anslutningen är per användare, nätverket är det inte

Windows behåller anslutningsobjektet i profilen för användaren som skapade det. Den virtuella adaptern den skapar, de rutter den installerar och de DNS-servrar den registrerar gäller för hela maskinen. Den uppdelningen är källan till båda symtomen i rubriken.

Det förklarar också varför utloggning av den första användaren vanligtvis lagar den andra. Att ta bort anslutningen tar bort adaptern och rutterna med den, och tillståndet för hela maskinen återgår till vad det var innan någon kopplade upp. Det är en användbar diagnostik: om utloggningen lagar det andra kontot tittar du på delat tillstånd och inte på en trasig profil.

Det du inte kan göra är att ge den andra sessionen en annan routingtabell. Det finns en tabell, och vilka två sessioner som helst delar den. Det är en egenskap hos operativsystemet och inte en begränsning hos en viss klient. Det betyder också att varje design som antar något annat kommer att fortsätta misslyckas, och felen kommer att se ut som orelaterade programfel.

Ta reda på vad som tog bort Byt användare, i den här ordningen

Snabb användarväxling försvann av en helt annan anledning, och åtgärden har inget med routing att göra. Arbeta igenom de fyra kandidaterna i ordning, eftersom de två första kan återställas på sekunder och de senare har en kostnad.

Get-ItemProperty 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System' -Name HideFastUserSwitching
gpresult /h $env:TEMP\gp.html
Get-Service | Where-Object { $_.DisplayName -match 'Logon|Access|Credential' } | Select-Object Status,Name,DisplayName

Registervärdet är den enklaste förklaringen. Om det finns och läser 1 är posten dold av policy, och grupprincipens sökväg är Computer Configuration, Administrative Templates, System, Logon, och inställningen som är namngiven för att dölja startpunkter för snabb användarväxling. Ställ den på Not Configured och uppdatera med gpupdate /force.

Det andra kommandot berättar om den policyn levereras från en domän i stället för att skrivas lokalt. Om den visas i rapporten med en vinnande GPO är redigering av det lokala värdet en tillfällig åtgärd som återgår vid nästa uppdatering, och samtalet hör till den som äger policyn.

Det tredje kommandot täcker den andra mekanismen. En leverantör av autentiseringsuppgifter eller nätverksåtkomst som installerar en inloggningsmodul kan undertrycka posten medan den körs, och vissa klienter registrerar också en komponent som startar före inloggning och håller ett anspråk på inloggningsskärmen. Att inaktivera den tjänsten återställer växlingen, och det tar också bort funktionerna före inloggning eller posture som modulen finns för att tillhandahålla.

CauseHow to confirmCost of the fix
HideFastUserSwitching policyRegistry value present and set to 1None; remove the policy
Logon module serviceService running under a vendor nameLoses pre-logon and posture behaviour
GINA-era assumptionOnly relevant on very old WindowsNothing to fix; the mechanism is gone

Ändra det utan att låsa ute dig själv

Håll en administrativ session öppen medan du arbetar, och gör aldrig en ändring på inloggningsskärmen på en maskin du bara når genom den skärmen. Logga ut de andra sessionerna först, tillämpa ändringen, uppdatera och testa sedan genom att byta användare i stället för genom att starta om.

Anteckna vilka posture-funktioner du inaktiverade. En klientuppdatering kan installera om eller återaktivera inloggningsmodulen, och symtomet kommer tillbaka utan uppenbar orsak, vanligtvis mitt i ett supportfönster när ingen minns den tidigare ändringen.

På en hanterad enhet, utgå från att inställningen levereras ovanifrån. Att kontrollera policyrapporten först sparar en timme av lokala redigeringar som återgår. Det berättar också vem du ska fråga när svaret är nej. Ett ärende som namnger den vinnande policyn löses dubbelt så snabbt som ett som beskriver en registernyckel som någon redan har ändrat.

Verifiera båda kontona och välj modellen

Testa resultatet i den ordning de två användarna upplever det. Logga in som det andra kontot medan det första är frånkopplat, bekräfta normal åtkomst, anslut sedan det första kontots tunnel och bekräfta att det andra kontots förväntade väg fortfarande är den du avsåg.

qwinsta
Get-NetRoute -DestinationPrefix 0.0.0.0/0 | Select-Object InterfaceAlias,NextHop,RouteMetric
Test-NetConnection -ComputerName intranet.example.internal -Port 443

Om båda kontona verkligen behöver olika nätverksvägar samtidigt är det ärliga svaret två maskiner, två virtuella maskiner eller en policy där bara en väg krävs. En delad tunnel på den delade anslutningen kan begränsa vad som rör sig, men den kan inte ge varje session sin egen tabell. Att komma dit tidigt är billigare än att upptäcka det efter tre försök till kringgående.

Det är beslutet som ska fattas uttryckligen i stället för att lappas runt. En routingtabell, en resolverlista, en brandväggsprofil: allt annat följer av det, och åtgärden som respekterar det kommer fortfarande att fungera nästa månad.

Relaterade artiklar