Device Region and Integrated Services Region Policy in Windows

Published ยท Last revised

Microsoft is actively rolling out an update for Windows 11 to comply with the Digital Markets Act (DMA) in the European Economic Area (EEA). A crucial part of this implementation involves regional settings. Officially, Windows will use the region selected during the initial setup to determine if the PC is in the EEA.

The component responsible for integrated services region policy resides in SystemSettings.DataModel.dll. This component retrieves the device region through a multi-step process:

  1. It first attempts to retrieve the device's geographical location identifier DeviceRegion stored in the Registry at HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Control Panel. If this attempt fails, it resorts to calling the Win32 API GetUserGeoID with a geographical location class of GEOCLASS_NATION and caches the result in the aforementioned location.
  2. It then resolves the geographical location identifier to a two-letter ISO 3166-1 code or UN M.49 code for the geographic region using the GetGeoInfoW Win32 API.

The state of the integrated services region policy depends on the evaluation of the policy's default state (enabled/disabled) and conditional rules (e.g., device region). The system stores these policies on disk in a system directory (\System32\IntegratedServicesRegionPolicySet.json).

Here's an example of one such policy:

{
"$comment": "Edge is uninstallable.",
"guid": "{1bca278a-5d11-4acf-ad2f-f9ab6d7f93a6}",
"defaultState": "disabled",
"conditions": {
"region": {
"enabled": ["AT", "BE", "BG", "CH", "CY", "CZ", "DE", "DK", "EE", "ES", "FI", "FR", "GF", "GP", "GR", "HR", "HU", "IE", "IS", "IT", "LI", "LT", "LU", "LV", "MT", "MQ", "NL", "NO", "PL", "PT", "RE", "RO", "SE", "SI", "SK", "YT"]
}
}
},

You can reconfigure a PC to appear as if it's in the EEA region, in the context of integrated services region policy. This can be done by adjusting the value mentioned earlier in the Registry. Here's an example of a Registry Entries file changing the cached geographical location identifier to 94 (Germany):

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Control Panel\DeviceRegion]
"DeviceRegion"=dword:0000005e

You can also replace the component responsible for integrated services region policy with your own. I've provided a skeleton project on GitHub.