Events
May 19, 6 PM - May 23, 12 AM
Calling all developers, creators, and AI innovators to join us in Seattle @Microsoft Build May 19-22.
Register todayThis browser is no longer supported.
Upgrade to Microsoft Edge to take advantage of the latest features, security updates, and technical support.
To configure Assigned Access, you must create and apply a configuration XML file to your devices. The configuration file must conform to a schema, as defined in Assigned Access XML Schema Definition (XSD).
This article describes how to configure an Assigned Access configuration file, including practical examples.
Let's start by looking at the basic structure of the XML file. An Assigned Access configuration file contains:
profiles
. Each profile
defines a set of applications that are allowed to runconfigs
. Each config
associates a user account or a group to a profile
Here's a basic example of an Assigned Access configuration file, with one profile and one config:
<?xml version="1.0" encoding="utf-8" ?>
<AssignedAccessConfiguration xmlns="http://schemas.microsoft.com/AssignedAccess/2017/config">
<Profiles>
<Profile Id="{GUID}">
<!-- Add configuration here as needed -->
</Profile>
</Profiles>
<Configs>
<Config>
<!-- Add configuration here as needed -->
</Config>
</Configs>
</AssignedAccessConfiguration>
The Assigned Access configuration XML is versioned. The version is defined in the XML root element, and it's used to determine which schema to use to validate the XML file. The version is also used to determine which features are available for the configuration. Here's a table of the versions, aliases used in the documentation examples, and namespaces:
Version | Alias | Namespace |
---|---|---|
Windows 11, version 22H2 | v5 |
http://schemas.microsoft.com/AssignedAccess/2022/config |
Windows 11, version 21H2 | v4 |
http://schemas.microsoft.com/AssignedAccess/2021/config |
Windows 10 | v5 |
http://schemas.microsoft.com/AssignedAccess/202010/config |
Windows 10 | v3 |
http://schemas.microsoft.com/AssignedAccess/2020/config |
Windows 10 | rs5 |
http://schemas.microsoft.com/AssignedAccess/201810/config |
Windows 10 | default | http://schemas.microsoft.com/AssignedAccess/2017/config |
To authorize a compatible configuration XML that includes version-specific elements and attributes, always include the namespace of the add-on schemas, and decorate the attributes and elements accordingly with the namespace alias. For example, to configure the StartPins
feature that was added in Windows 11, version 22H2, use the below example. Note the alias v5
associated to the http://schemas.microsoft.com/AssignedAccess/2022/config
namespace for 22H2 release, and the alias is tagged on StartPins
inline.
<?xml version="1.0" encoding="utf-8" ?>
<AssignedAccessConfiguration xmlns="http://schemas.microsoft.com/AssignedAccess/2017/config"
xmlns:v5="http://schemas.microsoft.com/AssignedAccess/2022/config">
<Profiles>
<Profile Id="{GUID}">
<!-- Add configuration here as needed -->
<v5:StartPins>
<!-- Add StartPins configuration here -->
</v5:StartPins>
</Profile>
</Profiles>
<Configs>
<Config>
<!-- Add configuration here as needed -->
</Config>
</Configs>
</AssignedAccessConfiguration>
Here you can find the Assigned Access XML schema definitions: Assigned Access XML Schema Definition (XSD).
A configuration file can contain one or more profiles. Each profile is identified by a unique identifier Profile Id
and, optionally, a Name
. For example:
<Profiles>
<Profile Id="{EDB3036B-780D-487D-A375-69369D8A8F78}" Name="Microsoft Learn example">
<!-- Add configuration here as needed -->
</Profile>
</Profiles>
Tip
The Profile Id
must be unique within the XML file. You can generate a GUID with the PowerShell cmdlet New-Guid
.
A profile can be one of two types:
KioskModeApp
: is used to configure a kiosk experience. Users assigned this profile execute a Universal Windows Platform (UWP) application or Microsoft Edge running in full-screenAllAppList
is used to configure a restricted user experience. Users assigned this profile, access the desktop with the specific apps on the Start menuImportant
KioskModeApp
and ShellLauncher
at the same time on the deviceKioskModeApp
profile, but it can contain multiple AllAppList
profiles.The properties of a KioskModeApp
profile are:
Property | Description | Details |
---|---|---|
AppUserModelId |
The Application User Model ID (AUMID) of the UWP app. | Learn how to Find the Application User Model ID of an installed app. |
v4:ClassicAppPath |
The full path to a desktop app executable. | This is the path to the desktop app used in kiosk mode. The path can contain system environment variables in the form of %variableName% . |
v4:ClassicAppArguments |
The arguments to be passed to the desktop app. | This property is optional. |
By default, you can use the CTRL+ALT+DEL sequence to exit kiosk mode. You can define a BreakoutSequence
element to change the default sequence. The Key
attribute is a string that represents the key combination.
Example of two profiles, a desktop app and a UWP app:
<Profile Id="{EDB3036B-780D-487D-A375-69369D8A8F78}">
<KioskModeApp v4:ClassicAppPath="%ProgramFiles(x86)%\Microsoft\Edge\Application\msedge.exe" v4:ClassicAppArguments="--kiosk https://www.contoso.com/ --edge-kiosk-type=fullscreen --kiosk-idle-timeout-minutes=2" />
<v4:BreakoutSequence Key="Ctrl+A"/>
</Profile>
<Profile Id="{EDB3036B-780D-487D-A375-69369D8A8F79}">
<KioskModeApp AppUserModelId="Microsoft.BingWeather_8wekyb3d8bbwe!App" />
</Profile>
Note
You can only assign a KioskModeApp
profile to users, not to groups.
Based on the purpose of the kiosk device, define the list of applications that are allowed to run. This list can contain both UWP apps and desktop apps. When the mult-app kiosk configuration is applied to a device, AppLocker rules are generated to allow the apps that are listed in the configuration.
Note
If an app has a dependency on another app, both must be included in the allowed apps list.
Within the AllAppList
node, define a list of applications that are allowed execute. Each App
element has the following properties:
Property | Description | Details |
---|---|---|
AppUserModelId |
The Application User Model ID (AUMID) of the UWP app. | Learn how to Find the Application User Model ID of an installed app. |
DesktopAppPath |
The full path to a desktop app executable. | This is the path to the desktop app that used in kiosk mode. The path can contain system environment variables in the form of %variableName% . |
rs5:AutoLaunch |
A Boolean attribute to indicate whether to launch the app (either desktop or UWP app) automatically when the user signs in. | This property is optional. Only one application can autolaunch. |
rs5:AutoLaunchArguments |
The arguments to be passed to the app that is configured with AutoLaunch . |
AutoLaunchArguments are passed to the apps as is and the app needs to handle the arguments explicitly. This property is optional. |
Example:
<AllAppsList>
<AllowedApps>
<App AppUserModelId="Microsoft.WindowsCalculator_8wekyb3d8bbwe!App" />
<App DesktopAppPath="C:\Windows\system32\cmd.exe" />
<App DesktopAppPath="%windir%\explorer.exe" />
<App DesktopAppPath="%ProgramFiles(x86)%\Microsoft\Edge\Application\msedge.exe" />
<App DesktopAppPath="%ProgramFiles(x86)%\Microsoft\Edge\Application\msedge_proxy.exe" />
<App AppUserModelId="Microsoft.MicrosoftEdge.Stable_8wekyb3d8bbwe!App"/>
<App DesktopAppPath="C:\Windows\System32\notepad.exe" rs5:AutoLaunch="true" rs5:AutoLaunchArguments="%windir%\setuperr.log" />
</AllowedApps>
</AllAppsList>
Important
If you pins elements to the Start menu with Microsoft Edge secondary tiles, include the following apps in the allowed apps list:
<App DesktopAppPath="%ProgramFiles(x86)%\Microsoft\Edge\Application\msedge_proxy.exe" />
<App AppUserModelId="Microsoft.MicrosoftEdge.Stable_8wekyb3d8bbwe!App"/>
In a restricted user experience, folder browsing is locked down by default. You can explicitly allow access to known folders by including the FileExplorerNamespaceRestrictions
node.
You can specify user access to Downloads folder, Removable drives, or no restrictions at all. Downloads and Removable Drives can be allowed at the same time.
<Profiles>
<Profile Id="{EDB3036B-780D-487D-A375-69369D8A8F78}" Name="Microsoft Learn example">
<AllAppsList>
<AllowedApps>
<!-- Add configuration here as needed -->
</AllowedApps>
</AllAppsList>
<rs5:FileExplorerNamespaceRestrictions>
<!-- Add configuration here as needed -->
</rs5:FileExplorerNamespaceRestrictions>
<!-- Add configuration here as needed -->
</Profile>
</Profiles>
Here are some practical examples.
Either don't use the node or leave it empty.
<rs5:FileExplorerNamespaceRestrictions>
</rs5:FileExplorerNamespaceRestrictions>
<rs5:FileExplorerNamespaceRestrictions>
<rs5:AllowedNamespace Name="Downloads"/>
</rs5:FileExplorerNamespaceRestrictions>
<rs5:FileExplorerNamespaceRestrictions>
<v3:AllowRemovableDrives />
</rs5:FileExplorerNamespaceRestrictions>
<rs5:FileExplorerNamespaceRestrictions>
<rs5:AllowedNamespace Name="Downloads"/>
<v3:AllowRemovableDrives/>
</rs5:FileExplorerNamespaceRestrictions>
<rs5:FileExplorerNamespaceRestrictions>
<v3:NoRestriction />
</rs5:FileExplorerNamespaceRestrictions>
Tip
To grant access to File Explorer in a restricted user experience, add Explorer.exe
to the list of allowed apps, and pin a shortcut to the Start menu.
For a restricted user experience profile (AllAppList
), you must define the Start layout. The Start layout contains a list of applications that are pinned to the Start menu. You can choose to pin all the allowed applications to the Start menu, or a subset. The easiest way to create a customized Start layout is to configure the Start menu on a test device and then export the layout.
To learn how to customize and export a Start menu configuration, see Customize the Start menu.
With the exported Start menu configuration, use the StartLayout
element and add the content of the XML file. For example:
<StartLayout>
<![CDATA[
<!-- Add your exported Start menu XML configuration file here -->
]]>
</StartLayout>
Example with some apps pinned:
<StartLayout>
<![CDATA[
<LayoutModificationTemplate xmlns:defaultlayout="http://schemas.microsoft.com/Start/2014/FullDefaultLayout"
xmlns:start="http://schemas.microsoft.com/Start/2014/StartLayout" Version="1"
xmlns="http://schemas.microsoft.com/Start/2014/LayoutModification">
<LayoutOptions StartTileGroupCellWidth="6" />
<DefaultLayoutOverride>
<StartLayoutCollection>
<defaultlayout:StartLayout GroupCellWidth="6">
<start:Group Name="Group1">
<start:Tile Size="4x4" Column="0" Row="0" AppUserModelID="Microsoft. ZuneMusic_8wekyb3d8bbwe!Microsoft.ZuneMusic" />
<start:Tile Size="2x2" Column="4" Row="2" AppUserModelID="Microsoft. ZuneVideo_8wekyb3d8bbwe!Microsoft.ZuneVideo" />
</start:Group>
<start:Group Name="Group2">
<start:DesktopApplicationTile Size="2x2" Column="2" Row="0" DesktopApplicationLinkPath="%ALLUSERSPROFILE%\Microsoft\Windows\Start Menu\Programs\Accessories\Paint.lnk" />
<start:DesktopApplicationTile Size="2x2" Column="0" Row="0" DesktopApplicationLinkPath="%APPDATA%\Microsoft\Windows\Start Menu\Programs\Accessories\Notepad. lnk" />
</start:Group>
</defaultlayout:StartLayout>
</StartLayoutCollection>
</DefaultLayoutOverride>
</LayoutModificationTemplate>
]]>
</StartLayout>
With the exported Start menu configuration, use the v5:StartPins
element and add the content of the exported JSON file. For example:
<v5:StartPins>
<![CDATA[
<!-- Add your exported Start menu JSON configuration file here -->
]]>
</v5:StartPins>
Example with some apps and a Microsoft Edge pinned site:
<v5:StartPins>
<![CDATA[
{
"pinnedList":[
{"packagedAppId":"Microsoft.WindowsCalculator_8wekyb3d8bbwe!App"},
{"desktopAppLink":"%APPDATA%\\Microsoft\\Windows\\Start Menu\\Programs\\File Explorer.lnk"},
{"desktopAppLink": "%ALLUSERSPROFILE%\\Microsoft\\Windows\\Start Menu\\Programs\\Microsoft Edge.lnk"},
{"secondaryTile": { "tileId": "MSEdge._pin_mjalfbhoimpkfjlpajnjkpknoe", "arguments": " --pin-url=https://www.contoso.com --profile-directory=Default --launch-tile", "displayName": "Contoso intranet", "packagedAppId": "Microsoft.MicrosoftEdge.Stable_8wekyb3d8bbwe!App", "smallIconPath": "ms-appdata:///local/Pins/MSEdge._pin_mjalfbhoimpkfjlpajnjkpknoe/ContosoLogo.png", "smallIcon": "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", "largeIconPath": "ms-appdata:///local/Pins/MSEdge._pin_mjalfbhoimpkfjlpajnjkpknoe/ContosoLogo.png" }}
]
}
]]>
</v5:StartPins>
Note
If an app isn't installed for the user, but is included in the Start layout XML, the app isn't shown on the Start screen.
You can't pin apps on the taskbar in a restricted user experience. It's not supported to configure a Taskbar layout using the <CustomTaskbarLayoutCollection>
tag in a layout modification XML, as part of the Assigned Access configuration.
The only Taskbar customization available is the option to show or hide it, using the ShowTaskbar
boolean attribute.
The following example exposes the taskbar:
<Taskbar ShowTaskbar="true"/>
The following example hides the taskbar:
<Taskbar ShowTaskbar="false"/>
Note
This is different from the Automatically hide the taskbar option in tablet mode, which shows the taskbar when swiping up from or moving the mouse pointer down to the bottom of the screen. Setting ShowTaskbar
as false
hides the taskbar permanently.
You can customize the Taskbar by creating a custom layout and adding it to your XML file. To learn how to customize and export the Taskbar configuration, see Customize the Taskbar.
Note
In Windows 11, the ShowTaskbar
attribute is no-op. Configure it with a value of true
.
With the exported Taskbar configuration, use the v5:TaskbarLayout
element and add the content of the XML file. For example:
<Taskbar ShowTaskbar="true" />
<v5:TaskbarLayout><![CDATA[
<!-- Add your exported Taskbar XML configuration file here -->
]]>
</v5:TaskbarLayout>
Here's an example of a custom Taskbar with a few apps pinned:
<Taskbar ShowTaskbar="true" />
<v5:TaskbarLayout><![CDATA[
<?xml version="1.0" encoding="utf-8"?>
<LayoutModificationTemplate
xmlns="http://schemas.microsoft.com/Start/2014/LayoutModification"
xmlns:defaultlayout="http://schemas.microsoft.com/Start/2014/FullDefaultLayout"
xmlns:start="http://schemas.microsoft.com/Start/2014/StartLayout"
xmlns:taskbar="http://schemas.microsoft.com/Start/2014/TaskbarLayout"
Version="1">
<CustomTaskbarLayoutCollection>
<defaultlayout:TaskbarLayout>
<taskbar:TaskbarPinList>
<taskbar:DesktopApp DesktopApplicationID="Microsoft.Windows.Explorer" />
<taskbar:DesktopApp DesktopApplicationID="windows.immersivecontrolpanel_cw5n1h2txyewy!microsoft.windows.immersivecontrolpanel" />
<taskbar:DesktopApp DesktopApplicationLinkPath="%ALLUSERSPROFILE%\Microsoft\Windows\Start Menu\Programs\Microsoft Edge.lnk"/>
</taskbar:TaskbarPinList>
</defaultlayout:TaskbarLayout>
</CustomTaskbarLayoutCollection>
</LayoutModificationTemplate>
]]>
</v5:TaskbarLayout>
Under Configs
, define one or more user accounts, or groups, and their association with a profile.
When the user account signs in, the associated Assigned Access profile is enforced along with policy settings that are part of the restricted user experience.
You can assign:
Limitations:
Note
On Microsoft Entra joined and domain joined devices, local user accounts aren't displayed on the sign-in screen by default. To display the local accounts on the sign-in screen, enable the policy setting:
./Device/Vendor/MSFT/Policy/Config/WindowsLogon/
EnumerateLocalUsersOnDomainJoinedComputersWith <AutoLogonAccount>
, Assigned Access creates and manages a user account to automatically sign in after a device restarts. The account is a local standard user.
The following example shows how to specify an account to sign in automatically, and the optional display name for the account on the sign-in screen:
<Configs>
<Config>
<AutoLogonAccount rs5:DisplayName="Microsoft Learn example"/>
<DefaultProfile Id="{GUID}"/>
</Config>
</Configs>
Important
When Exchange Active Sync (EAS) password restrictions are active on the device, the autologon feature doesn't work. This behavior is by design. For more informations, see How to turn on automatic logon in Windows.
With GlobalProfile
, you can define an Assigned Access profile that is applied to every non-admin account that signs in. GlobalProfile
is useful in scenarios like frontline workers or student devices, where you want to ensure that every user has a consistent experience.
<Configs>
<v3:GlobalProfile Id="{GUID}"/>
</Configs>
Note
You can combine a global profile with other profiles. If you assign a user a non-global profile, the global profile won't be applied to that user.
Individual accounts are specified using <Account>
.
Important
Before applying the Assigned Access configuration, make sure the specified user account is available on the device, otherwise it fails.
For both domain and Microsoft Entra accounts, as long as the device is Active Directory joined or Microsoft Entra joined, the account can be discovered in the domain forest or tenant that the device is joined to. For local accounts, it is required that the account exist before you configure the account for assigned access.
Local account can be entered as devicename\user
, .\user
, or just user
.
<Config>
<Account>user</Account>
<DefaultProfile Id="{GUID}"/>
</Config>
Domain accounts must be entered using the format domain\samAccountName
.
<Config>
<Account>contoso\user</Account>
<DefaultProfile Id="{GUID}"/>
</Config>
Microsoft Entra accounts must be specified with the format: AzureAD\{UPN}
. AzureAD
must be provided as is, then follow with the Microsoft Entra user principal name (UPN).
<Config>
<Account>AzureAD\user@contoso.onmicrosoft.com</Account>
<DefaultProfile Id="{GUID}"/>
</Config>
Group accounts are specified using <UserGroup>
. Nested groups aren't supported. For example, if User A is member of Group A, Group A is member of Group B, and Group B is used in <Config/>
, User A doesn't have the kiosk experience.
Specify the group type as LocalGroup
and add the group name in the Name
attribute.
<Config>
<UserGroup Type="LocalGroup" Name="groupname" />
<DefaultProfile Id="{GUID}"/>
</Config>
Both security and distribution groups are supported. Specify the group type as ActiveDirectoryGroup
. Use the domain name as the prefix in the name attribute.
<Config>
<UserGroup Type="ActiveDirectoryGroup" Name="contoso\groupname" />
<DefaultProfile Id="{GUID}"/>
</Config>
Use the object ID of the Microsoft Entra group. You can find the object ID on the overview page for the group by signing in to the Microsoft Entra admin center and browsing to Identity > Groups > All groups. Specify the group type as AzureActiveDirectoryGroup
. The kiosk device must have internet connectivity when users that belong to the group sign-in.
<Config>
<UserGroup Type="AzureActiveDirectoryGroup" Name="Group_GUID" />
<DefaultProfile Id="{GUID}"/>
</Config>
Review some practical examples of Assigned Access XML configurations:
Events
May 19, 6 PM - May 23, 12 AM
Calling all developers, creators, and AI innovators to join us in Seattle @Microsoft Build May 19-22.
Register todayTraining
Learning path
MD-102 Configure profiles for user and devices - Training
This learning path explores Intune device profiles, the benefits of user profiles and how to synchronize profile data across multiple devices.
Certification
Microsoft Certified: Identity and Access Administrator Associate - Certifications
Demonstrate the features of Microsoft Entra ID to modernize identity solutions, implement hybrid solutions, and implement identity governance.