Mit der Einhaltung des Digital Markets Act (DMA) in der Europäischen Wirtschaftszone (EEA) führt Microsoft Änderungen am Single Sign-On (SSO)-Verhalten von Windows 10 und Windows 11 ein. Ab Januar 2024 werden Benutzer nach dem Anmelden an Windows einen neuen Hinweis sehen, der sie fragt, ob sie dieselben Anmeldeinformationen für Apps verwenden möchten, die Microsoft-Konten oder Entra IDs unterstützen.
Microsoft betont, dass das Unterdrücken dieser Benachrichtigung offiziell nicht unterstützt wird. Doch genau hier kommt unsere Lösung ins Spiel. 😉
Das Problem
Für Unternehmen, die einen reibungslosen Benutzerfluss ohne zusätzliche Interaktionen wünschen, ist dieser SSO-Hinweis störend:
- Stört den OOBE-Prozess bei Windows Autopilot.
- Verwirrt Endbenutzer, die den zusätzlichen Schritt nicht erwarten.
- Kein offizieller Schalter von Microsoft, um den Hinweis zu deaktivieren.
Die Lösung: PowerShell-Skript zur Anpassung der Regionseinstellungen
Wir haben ein PowerShell-Skript entwickelt, das gezielt den SSO-Hinweis unterdrückt. Technisch passiert Folgendes:
- Ändern der Besitzrechte und Berechtigungen der Datei
IntegratedServicesRegionPolicySet.json
. - Anpassung des JSON-Inhalts, um die Region „CH“ (Schweiz) aus der Liste der deaktivierten Regionen zu entfernen.
🧩 Warum funktioniert das?
Microsoft verwendet regionsbasierte Richtlinien, um zu bestimmen, ob der SSO-Hinweis angezeigt wird. Durch das Entfernen von „CH“ aus der „disabled“-Regionenliste wird Windows quasi „vorgegaukelt“, dass die Richtlinie hier nicht greift.
Das Skript im Überblick
🗂️ Detection Script
# Detection Script for Proactive Remediation
$filePath = "C:\Windows\System32\IntegratedServicesRegionPolicySet.json"
# Check if the file exists
if (-not (Test-Path $filePath)) {
Write-Host "File does not exist."
exit 0 # Kein Problem, da die Datei nicht vorhanden ist
}
# Read JSON and check if "CH" is still in the disabled list
try {
$jsonContent = Get-Content -Path $filePath -Raw | ConvertFrom-Json
foreach ($policy in $jsonContent.policies) {
if ($policy.guid -eq "{1d290cdb-499c-4d42-938a-9b8dceffe998}") {
if ($policy.conditions.region.disabled -contains "CH") {
Write-Host "'CH' is still in the disabled list. Remediation required."
exit 1 # Problem erkannt
}
}
}
Write-Host "'CH' is not in the disabled list. No remediation needed."
exit 0 # Alles in Ordnung
}
catch {
Write-Host "Error reading JSON: $_"
exit 1 # Fehler erkannt
}
🔧 Remediation Script
# This script adjusts file permissions and modifies configuration settings for the "IntegratedServicesRegionPolicySet.json" file.
# It ensures the necessary access rights for system operations and updates specific entries within the JSON structure.
#
# Configuration for Deployment:
# - Requires administrative privileges
# - Ensure execution in a 64-bit PowerShell environment
# - Script signature check not enforced
#
#
# Path to the target configuration file
$filePath = "C:\Windows\System32\IntegratedServicesRegionPolicySet.json"
# Verify administrative privileges
if (-not ([Security.Principal.WindowsPrincipal] [Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole] "Administrator")) {
Write-Host "Administrative rights are required to execute this script." -ForegroundColor Red
exit 1
}
# Confirm file existence
if (-not (Test-Path $filePath)) {
Write-Host "Target file not found at the specified path: $filePath" -ForegroundColor Red
exit 1
}
# Step 1: Adjust file ownership to the Administrators group
Write-Host "Updating file ownership to the Administrators group..." -ForegroundColor Yellow
takeown /F $filePath /A
if (-not ((Get-Acl $filePath).Owner -like "*Administrators")) {
Write-Host "Ownership update failed." -ForegroundColor Red
exit 1
}
Write-Host "Ownership successfully updated." -ForegroundColor Green
# Step 2: Apply full control permissions for the Administrators group
Write-Host "Granting full control permissions to the Administrators group..." -ForegroundColor Yellow
icacls $filePath /grant:r Administrators:F /C
$acl = Get-Acl $filePath
if (-not ($acl.Access | Where-Object { $_.IdentityReference -like "*Administrators" -and $_.FileSystemRights -eq "FullControl" })) {
Write-Host "Permission update unsuccessful." -ForegroundColor Red
exit 1
}
Write-Host "Full control permissions successfully granted." -ForegroundColor Green
# Step 3: Modify JSON content to update specific settings
Write-Host "Applying configuration updates to JSON content..." -ForegroundColor Yellow
try {
# Load JSON data
$jsonContent = Get-Content -Path $filePath -Raw | ConvertFrom-Json
# Update configuration settings within JSON
foreach ($policy in $jsonContent.policies) {
if ($policy.guid -eq "{1d290cdb-499c-4d42-938a-9b8dceffe998}") {
$policy.conditions.region.disabled = $policy.conditions.region.disabled | Where-Object { $_ -ne "CH" }
Write-Host "Configuration update applied for GUID: $($policy.guid)." -ForegroundColor Green
}
}
# Save updated JSON back to the file
$jsonContent | ConvertTo-Json -Depth 10 | Set-Content -Path $filePath -Force -Encoding UTF8
Write-Host "Configuration successfully updated and saved." -ForegroundColor Green
exit 0 # Success
}
catch {
Write-Host "An error occurred while updating the configuration: $_" -ForegroundColor Red
exit 1 # Failure
}
So wird es implementiert (Intune Deployment)
- Proactive Remediation in Intune einrichten:
- Detection- und Remediation-Skripte hochladen.
- Ausführungskonfiguration:
- Run using logged-on credentials: No
- Script signature check: No
- Run in 64-bit PowerShell Host: Yes
- Gerätesynchronisation:
- Manuell via Intune anstoßen oder auf dem Client den Service neustarten:
Restart-Service -Name "IntuneManagementExtension"
- Manuell via Intune anstoßen oder auf dem Client den Service neustarten:
- Ergebnis:
- Der SSO-Hinweis wird nicht mehr angezeigt.
Fazit
Microsoft behauptet zwar, dass das Unterdrücken des SSO-Hinweises nicht möglich ist, aber dieses Skript beweist das Gegenteil. Es zeigt, dass technisches Know-how und ein bisschen Kreativität oft mehr bewirken können als offizielle Dokumentation.
Disclaimer: Diese Lösung funktioniert aktuell einwandfrei, aber zukünftige Windows-Updates könnten dies ändern. Daher empfehlen wir, die Skripte regelmäßig zu überprüfen und ggf. anzupassen.