Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
Note
Some information relates to pre-released product, which may be substantially modified before it's commercially released. Microsoft makes no warranties, express or implied, with respect to the information provided here.
Which kinds of apps do app capabilities apply to?
Most scenarios for app capabilities are relevant only to apps that have package identity, and that run in an AppContainer. All UWP apps meet those criteria; so capabilities apply to them. But you can also give a desktop app package identity, and configure it as an AppContainer app. So capabilities apply to some desktop apps, too.
- For more info about packaging and package identity, see Deployment overview.
- For more info about AppContainer apps, see AppContainer for legacy apps.
A desktop app that's an AppContainer app can be identified by uap10:TrustLevel="appContainer" in its app package manifest (for more info, see Application (Windows 10)). Similarly, a desktop app with mediumIL (an integrity level of medium) has uap10:TrustLevel="mediumIL". Medium IL apps—which are also known as full trust apps—don't run in an AppContainer.
The internetClient and enterpriseAuthentication capabilities grant an application the ability to perform certain operations that the user can already do. So those are examples of capabilities that apply only to AppContainer apps. Conversely, a Medium IL app is already running as the user; so an app like that can already perform those operations without requiring those capabilities.
But there are some scenarios where a Medium IL app should declare a capability, too. In fact, a Medium IL app needs to declare the runFullTrust restricted capability. And, to be able to register out-of-process COM servers for inter-process communication (IPC), a packaged app needs runFullTrust. That feature is known as Packaged COM (for more info, see the blog post COM Server and OLE Document support for the Desktop Bridge).
For info about another scenario that applies even to Medium IL apps, see Privacy-sensitive capabilities in this topic.
You can determine whether your app package manifest needs runFullTrust simply by building your package. Makeappx.exe will validate the schema, and if runFullTrust isn't declared but something needs it, then you'll see a detailed error message including what the problem is, together with line and column numbers.
Declaring capabilities
If you want to access certain APIs or resources (such as pictures or music), or devices (such as the camera or the microphone), then you must declare the appropriate app capabilities in your Windows app's package manifest
You can declare general capabilities by using the Manifest Designer in Visual Studio; or you can add them manually. For more info, see How to specify capabilities in a package manifest. It's important to know that when customers get your app from the Microsoft Store, they're notified of all the capabilities that the app declares. So be sure to declare only the capabilities that your app needs.
Privacy-sensitive capabilities
A sensitive resource is a resource that can access the user's personal data, or cost the user money. In this topic, capabilities that provide apps with access to a sensitive resource are annotated by an asterisk (*) in the Capability scenario column.
Privacy-sensitive capabilities signal to the operating system (OS)—and to the user—what the app intends to do. Since it's good to send this signal to the users of your app, we recommend that you declare privacy-sensitive capabilities even for Medium IL apps (where the application identity is used to provide individual privacy toggles). Doing so allows those apps to be managed in the privacy settings pages (managed by Windows Settings) as soon as they're installed; as opposed to later, when they access privacy-sensitive resources.
Those privacy settings let the user dynamically control access to sensitive resources. Thus, it's important that your app doesn't assume that a sensitive resource is always available. For more info about accessing sensitive resources, see Security.
Different kinds of capabilities
There are several kinds of capabilities.
- General-use capabilities, which apply to most common app scenarios.
- Device capabilities, which allow your app to access internal and peripheral devices.
- Restricted capabilities, which require approval for Microsoft Store submission and/or are generally only available to Microsoft and certain partners.
- Custom capabilities.
General-use capabilities
General-use capabilities are specified by using Capability elements in your app package manifest. These capabilities apply to the most common app scenarios.
Note
All Capability elements must come before any CustomCapability and DeviceCapability elements under the Capabilities node in the package manifest.
| Capability scenario | Capability usage |
|---|---|
| Music* | The musicLibrary capability provides programmatic access to the user's Music library, allowing the app to enumerate and access all files in the library without user interaction. This capability is typically used in jukebox apps that make use of the entire Music library. The file picker provides a robust UI mechanism that lets users open files for use with an app. Declare the musicLibrary capability only when the scenarios for your app require programmatic access and can't be realized by using the file picker. The musicLibrary capability must include the uap namespace when you declare it in your app's package manifest as shown below. <Capabilities><uap:Capability Name="musicLibrary"/></Capabilities> |
| Pictures* | The picturesLibrary capability provides programmatic access to the user's Pictures library, allowing the app to enumerate and access all files in the library without user interaction. This capability is typically used in photo apps that make use of the entire Pictures library. The file picker provides a robust UI mechanism that lets users open files for use with an app. Declare the picturesLibrary capability only when the scenarios for your app require programmatic access and can't be realized them by using the file picker. The picturesLibrary capability must include the uap namespace when you declare it in your app's package manifest as shown below. <Capabilities><uap:Capability Name="picturesLibrary"/></Capabilities> |
| Videos* | The videosLibrary capability provides programmatic access to the user's Videos, allowing the app to enumerate and access all files in the library without user interaction. This capability is typically used in movie-playback apps that make use of the entire Videos library. The file picker provides a robust UI mechanism that lets users open files for use with an app. Declare the videosLibrary capability only when the scenarios for your app require programmatic access and can't be realized by using the file picker. The videosLibrary capability must include the uap namespace when you declare it in your app's package manifest as shown below. <Capabilities><uap:Capability Name="videosLibrary"/></Capabilities> |
| Removable Storage | The removableStorage capability provides programmatic access to files on removable storage, like USB keys and external hard drives, filtered to the file-type associations declared in the package manifest. For example, if a document-reader app declares a .doc file-type association, it can open .doc files on the removable storage device, but not other types of files. Be careful when you declare this capability, because users may include a variety of info in their removable storage devices, and will expect your app to provide a valid justification for programmatic access to the removable storage for all files of the declared type. Users will expect your app to handle any file associations that you declare. So don't declare file associations that your app cannot handle responsibly. The file picker provides a robust UI mechanism that lets users open files for use with an app. Declare the removableStorage capability only when the scenarios for your app require programmatic access and can't be realized by using the file picker. The removableStorage capability must include the uap namespace when you declare it in your app's package manifest as shown below. <Capabilities><uap:Capability Name="removableStorage"/></Capabilities> |
| Internet and public networks* | There are two capabilities that provide different levels of access to the Internet and public networks. The internetClient capability indicates that apps can receive incoming data from the Internet. Cannot act as a server. No local network access. The internetClientServer capability indicates that apps can receive incoming data from the Internet. Can act as a server. No local network access. Most apps that have a web service component will use internetClient. Apps that enable peer-to-peer (P2P) scenarios where the app needs to listen for incoming network connections should use internetClientServer. The internetClientServer capability includes the access that the internetClient capability provides, so you don't need to specify internetClient when you specify internetClientServer. |
| Homes and work networks* | The privateNetworkClientServer capability provides inbound and outbound access to home and work networks through the firewall. This capability is typically used for games that communicate across the local area network (LAN), and for apps that share data across a variety of local devices. If your app specifies musicLibrary, picturesLibrary, or videosLibrary, you don't need to use this capability to access the corresponding library in a Home Group. On Windows, this capability does not provide access to the Internet. |
| Appointments | The appointments capability provides access to the user's appointment store. This capability allows read access to appointments obtained from the synced network accounts and to other apps that write to the appointment store. With this capability, your app can create new calendars and write appointments to calendars that it creates. The appointments capability must include the uap namespace when you declare it in your app's package manifest as shown below. <Capabilities><uap:Capability Name="appointments"/></Capabilities> |
| Contacts* | The contacts capability provides access to the aggregated view of the contacts from various contacts stores. This capability gives the app limited access (network permitting rules apply) to contacts that were synced from various networks and the local contact store. The contacts capability must include the uap namespace when you declare it in your app's package manifest as shown below. <Capabilities><uap:Capability Name="contacts"/></Capabilities> |
| Code generation | The codeGeneration capability allows apps to access the following functions which provide JIT capabilities to apps. VirtualProtectFromApp CreateFileMappingFromApp OpenFileMappingFromApp MapViewOfFileFromApp |
| AllJoyn | The allJoyn capability allows AllJoyn-enabled apps and devices on a network to discover and interact with each other. All apps that access APIs in the Windows.Devices.AllJoyn namespace must use this capability. |
| Phone calls | The phoneCall capability allows apps to access all of the phone lines on the device and perform the following functions.
<Capabilities><uap:Capability Name="phoneCall"/></Capabilities>The phoneCallHistoryPublic capability allows apps to read cellular and some VoIP call history information on the device. This capability also allows the app to write VoIP call history entries. This capability is required to access all members of the PhoneCallHistoryStore class. |
| Recorded Calls Folder* | The recordedCallsFolder device capability allows apps to access the recorded calls folder. The recordedCallsFolder capability must include the mobile namespace when you declare it in your app's package manifest as shown below. <Capabilities><mobile:Capability Name="recordedCallsFolder"/></Capabilities> |
| User Account Information* | The userAccountInformation capability gives apps the ability to access the user's name and picture. This capability is required to access some APIs in the Windows.System.UserProfile namespace. The userAccountInformation capability must include the uap namespace when you declare it in your app's package manifest as shown below. <Capabilities><uap:Capability Name="userAccountInformation"/></Capabilities> |
| VoIP calling | The voipCall capability allows apps to access the VoIP calling APIs in the Windows.ApplicationModel.Calls namespace. The voipCall capability must include the uap namespace when you declare it in your app's package manifest as shown below. <Capabilities><uap:Capability Name="voipCall"/></Capabilities> |
| 3D Objects | The objects3D capability allows apps to have programmatic access to the 3D object files. This capability is typically used in 3D apps and games that need access to the entire 3D objects library. This capability is required to access the folder that contains the 3D objects using APIs in the Windows.Storage namespace. The objects3D capability must include the uap namespace when you declare it in your app's package manifest as shown below. <Capabilities><uap:Capability Name="objects3D"/></Capabilities> |
| Chat Message Access* | The chat capability allows apps to read and delete SMS and MMS messages. It also allows apps to store messages in the system data store. This capability is required to access messages using APIs in the Windows.ApplicationModel.Chat namespace. The chat capability must include the uap namespace when you declare it in your app's package manifest as shown below. <Capabilities><uap:Capability Name="chat"/></Capabilities> |
| Read Blocked Messages* | The blockedChatMessages capability allows apps to read SMS and MMS messages that have been blocked by the Spam Filter app. This capability is required to access the blocked messages using APIs in the Windows.ApplicationModel.Chat namespace. The blockedChatMessages capability must include the uap namespace when you declare it in your app's package manifest as shown below. <Capabilities><uap:Capability Name="blockedChatMessages"/></Capabilities> |
| Custom Devices | The lowLevelDevices capability allows apps to access custom devices when a number of additional requirements are met. This capability should not be confused with the lowLevel device capability, which allows access to GPIO, I2C, SPI, and PWM devices. If you develop a custom driver that exposes a device interface and you wish to open a handle to this device and send IOCTLs, you must:
|
| IoT System Administration | The systemManagement capability allows apps to have basic system administration privileges such as shutting down or rebooting, locale, and timezone. This capability is required to access some of the APIs in the Windows.System namespace. The systemManagement capability must include the iot namespace when you declare it in your app's package manifest as shown below. <Capabilities><iot:Capability Name="systemManagement"/></Capabilities> |
| Background Media Playback | The backgroundMediaPlayback capability changes the behavior of the media-specific APIs like the MediaPlayer and AudioGraph classes to enable media playback while your app is in the background. All active audio streams will no longer mute, but will continue to be audible when an app transitions to the background. Additionally, app lifetime will be extended automatically while playback is occurring. |
| Remote System | The remoteSystem capability allows apps to have access to a list of devices associated with the user's Microsoft Account. Access to the device list is necessary to perform any operations that persist across devices. This capability is required to access to all members of the following. |
| Spatial Perception | The spatialPerception capability provides programmatic access to spatial mapping data, giving mixed reality apps information about surfaces in application-specified regions of space near the user. Declare the spatialPerception capability only when your app will explicitly use these surface meshes, as the capability is not required for mixed reality apps to perform holographic rendering based on the user's head pose. |
| Global Media Control | The globalMediaControl capability allows apps to access to playback sessions throughout the system that have integrated with SystemMediaTransportControls to provide playback info and allow remote control. This capability is required to use some APIs in the Windows.Media.Control namespace. This capability is defined in the uap7:Capability element. |
| Graphics Capture | The graphicsCapture capability allows apps to take screenshots of windows or displays when allowed by the user. This capability is required to use the Windows.Graphics.Capture.GraphicsCapturePicker object. This capability is defined in the uap6:Capability element. |
| Borderless Graphics Capture | The graphicsCaptureWithoutBorder capability allows apps to take screenshots without showing a screenshot border around the window or display. This capability is required to use the Windows.Graphics.Capture.GraphicsCaptureSession.IsBorderRequired property. This capability is defined in the uap11:Capability element. |
| Programmatic Graphics Capture | The graphicsCaptureProgrammatic capability allows apps to take screenshots of various windows or displays on its own. This capability is required to create a Windows.Graphics.Capture.GraphicsCaptureItem object from a WindowId or DisplayId. This capability is defined in the uap11:Capability element. |
| User Data Tasks | The userDataTasks capability provides access to APIs in the Windows.ApplicationModel.UserDataTasks namespace, which provide access to the task items that are stored in Windows by Exchange ActiveSync (EAS) connections and other provider apps. |
| User Notification Listener | The userNotificationListener capability provides access to APIs in the Windows.UI.Notifications.Management namespace, which enable management of user notifications. |
Device capabilities
Device capabilities allow your app to access peripheral and internal devices. Device capabilities are specified by using DeviceCapability elements in your app package manifest. This element may require additional child elements and some device capabilities need to be added to the package manifest manually. For more info, see How to specify device capabilities in a package manifest and DeviceCapability Schema reference.
Note
You can have multiple DeviceCapability elements under the Capabilities element in the package manifest. All DeviceCapability elements must come after any Capability and CustomCapability elements.
| Capability scenario | Capability usage |
|---|---|
| Location* | The location capability provides access to location functionality that is retrieved from dedicated hardware like a GPS sensor in the PC or is derived from available network info. Apps must handle the case in which the user has disabled location services from the Settings charm. |
| Microphone | The microphone capability provides access to the microphone's audio feed, which allows the app to record audio from connected microphones. Apps must handle the case in which the user has disabled the microphone from the Settings charm. |
| Proximity | The proximity capability enables multiple devices in close proximity to communicate with one another. This capability is typically used in casual multi-player games and in apps that exchange information. Devices attempt to use the communication technology that provides the best possible connection, including Bluetooth, Wi-Fi, and the Internet. This capability is used only to initiate communication between the devices. |
| Webcam | The webcam capability provides access to the video feed of a built-in camera or external webcam, which allows the app to capture photos and videos. On Windows, apps must handle the case in which the user has disabled the camera from the Settings charm. The webcam capability only grants access to the video stream. In order to grant access to the audio stream as well, the microphone capability must be added. |
| USB | The usb device capability enables access to APIs in the Updating the app manifest package for a USB device. |
| Human interface device (HID) | The humaninterfacedevice device capability enables access to APIs in the How to specify device capabilities for HID. |
| Point of Service (POS) | The pointOfService device capability enables access to APIs in the Windows.Devices.PointOfService namespace. This namespace lets your app access Point of Service (POS) barcode scanners and magnetic stripe readers. The namespace provides a vendor-neutral interface for accessing POS devices from various manufacturers from a UWP app. |
| Bluetooth | The bluetooth device capability allows apps to communicate with already paired bluetooth devices over both Generic Attribute (GATT) or Classic Basic Rate (RFCOMM) protocol. This capability is required to use some APIs in the Windows.Devices.Bluetooth namespace. |
| Wi-Fi Networking | IMPORTANT. The wiFiControl device capability will be affected by upcoming changes to operating system behavior, planned for fall 2024. For more info, see Changes to API behavior for Wi-Fi access and location. The wiFiControl device capability allows apps to scan and connect to Wi-Fi networks. This capability is required to use some APIs in the Windows.Devices.WiFi namespace. |
| Radio state | The radios device capability allows apps to toggle the Wi-Fi and Bluetooth radios. This capability is required to use the APIs in the Windows.Devices.Radios namespace. |
| Optical disc | The optical device capability allows apps to access functions on optical disk drives such as CD, DVD, and Blu-ray. This capability is required to use some APIs in the Windows.Devices.Custom namespace. |
| Motion activity | The activity device capability allows apps to detect the current motion of the device. This capability is required to use some APIs in the Windows.Devices.Sensors namespace. |
| Presence Sensing | The humanPresence device capability allows apps to access Presence Sensors on the device which can provide information on user presence and engagement. This capability is required to use some APIs in the Windows.Devices.Sensors namespace. |
| Serial communication | The serialcommunication device capability provides access to APIs in the Windows.Devices.SerialCommunication namespace, which allows a Windows app to communicate with a device that exposes a serial port or some abstraction of a serial port. This capability is required to use the APIs in the Windows.Devices.SerialCommnication namespace. |
| Eye Tracker | The gazeInput capability allows apps to detect where the user is looking within the application bounds when a compatible eye tracking device is connected or for Mixed Reality devices that support gaze tracking. This capability is required to use some APIs in the Windows.Devices.Input.Preview namespace. For Mixed Reality devices, this capability is required for APIs in the Windows.Perception.People.EyesPose. |
| GPIO, I2C, SPI, and PWM | The lowLevel device capability provides access to GPIO, I2C, SPI, and PWM devices. This capability is required to use the APIs in the following namespaces: Windows.Devices.Gpio, Windows.Devices.I2c, Windows.Devices.Spi,Windows.Devices.Pwm.<Capabilities><DeviceCapability Name="lowLevel"/></Capabilities> |
Restricted capabilities
If your app declares any restricted capabilities, then you must provide info during the app submission process in order to be approved to publish your app to the Microsoft Store. You provide this info on the Submission options page of your submission, explaining how your app uses each restricted capability that it declares.
Important
Restricted capabilities are intended for very specific scenarios. The use of these capabilities is highly restricted and subject to additional Store onboarding policy and review. Note that you can sideload apps that declare restricted capabilities without needing to receive any approval. Approval is only required when submitting these apps to the Store.
Be sure not to declare these restricted capabilities unless your app truly needs them. There are cases where such capabilities are necessary and appropriate, such as banking with two-factor authentication, where users provide a smart card with a digital certificate that confirms their identity. Other apps may be designed primarily for enterprise customers and may need access to corporate resources that can't be accessed without the user's domain credentials.
To declare a restricted capability, modify your app package manifest source file (Package.appxmanifest). Add the xmlns:rescap XML namespace declaration, and use the rescap prefix when you declare your restricted capability. For example, here's how to declare the appCaptureSettings capability.
<?xml version="1.0" encoding="utf-8"?>
<Package
...
xmlns:rescap="http://schemas.microsoft.com/appx/manifest/foundation/windows10/restrictedcapabilities"
IgnorableNamespaces="... rescap">
...
<Capabilities>
<rescap:Capability Name="appCaptureSettings"/>
</Capabilities>
</Package>
Note
All restricted capability elements must come before any CustomCapability and DeviceCapability elements under the Capabilities node in the package manifest.
Restricted capability approval process
Previously, we required you to contact support to get approval to use a capability. We now allow you to provide this info in Partner Center as part of the submission process.
When you upload packages for your submission, we will detect whether any restricted capabilities are declared. If we do so, you will be required to provide details about how your product uses each capability on the Submission options page. Be sure to provide as much detail as possible to help us understand why your product needs to declare the capability. Note that this may add some additional time for your submission to complete the certification process.
During the certification process, our testers will review the info you provide to determine whether your submission is approved to use the capability. Note that this may add some additional time for your submission to complete the certification process. If we approve your use of the capability, your app will continue through the rest of the certification process. You generally will not have to repeat the capability approval process when you submit updates to your app (unless you declare additional capabilities).
If we don't approve your use of the capability, your submission will fail certification, and we will provide feedback in the certification report. You then have the option to create a new submission and upload packages which don't declare the capability, or, if applicable, address any issues related to your use of the capability and request approval in a new submission.
Note
If your submission uses a development sandbox in Partner Center (for example, this is the case for any game that integrates with Xbox Live), you must request approval in advance rather than providing info on the Submission options page. You can request approval in advance if you're publishing a game to Xbox through ID@Xbox or as a managed partner. To do so, please contact your Microsoft account team.
The team will need a brief description about how you are using the capability and why it is necessary for your product. If you do not provide all the information necessary, your request will be denied. You may also be asked to provide more information. Note that this process typically takes 5 business days or longer, so please submit your request well in advance.
You may also use this method of requesting approval (rather than providing this info during your submission), whether or not you're using a development sandbox, if you prefer to confirm that you are approved to use a restricted capability before you start your submission.
Restricted capability list
The following table lists the restricted capabilities. You may request approval for these capabilities in apps that you submit to the Store by following the process described above.
Important
Some of these restricted capabilities are almost never approved for apps submitted to the Store, except in very specific and limited circumstances. These capabilities are called out in the table below. We recommend not declaring these capabilities in your app if you plan to distribute it through the Store.
| Capability scenario | Capability usage |
|---|---|
| Enterprise | Windows domain credentials enable a user to log into remote resources using their credentials, and act as if a user provided their user name and password. The enterpriseAuthentication capability is typically used in line-of-business apps that connect to servers within an enterprise. You don't need this capability for generic communication across the Internet. The enterpriseAuthentication capability is intended to support common line-of-business apps. Don't declare it in apps that don't need to access corporate resources. The file picker provides a robust UI mechanism that enables users to open files on a network share for use with an app. Declare the enterpriseAuthentication capability only when the scenarios for your app require programmatic access, and you cannot realize them by using the file picker. The enterpriseAuthentication capability must include the uap namespace when you declare it in your app's package manifest as shown below. <Capabilities><uap:Capability Name="enterpriseAuthentication"/></Capabilities>This capability is required to call the GetUserNameEx function. The enterpriseDataPolicy capability allows apps to handle enterprise data separately and safely when the app is managed with Windows Information Protection policy (For example: Mobile Device Management and Mobile Application Management systems). Declare this restricted capability as shown below. <Capabilities><rescap:Capability Name="enterpriseDataPolicy"/></Capabilities>This capability is required to use all members of the following classes. |
| Shared user certificates | The sharedUserCertificates capability enables an app to add and access software and hardware-based certificates in the Shared User store, such as certificates stored on a smart card. This capability is typically used for financial or enterprise apps that require a smart card for authentication. The sharedUserCertificates capability must include the uap namespace when you declare it in your app's package manifest as shown below. <Capabilities><uap:Capability Name="sharedUserCertificates"/></Capabilities> |
| Documents* | The documentsLibrary capability provides programmatic access to the user's Documents library, filtered to the file type associations declared in the package manifest. For example, if a word processing app declared a .doc file type association, it can open .doc files in the user's Documents library. The documentsLibrary capability is only needed if your application programmatically accesses the Documents library without user intervention. Your application does not need the documentsLibrary capability to access the Documents library if the user chooses it with a picker API. Generally, apps should allow the user to choose the location of their files, using one of the following picker APIs:
In cases where existing workflows assume files will be in the Documents library (for example, interop with an existing desktop application) or where you do not want the user to have to choose the location, you can declare the documentsLibrary capability for your application. If you use the documentsLibrary capability for your application, it is recommended that you also allow the user to pick locations manually. The documentsLibrary capability must include the uap namespace when you declare it in your app's package manifest as shown below. <Capabilities><uap:Capability Name="documentsLibrary"/></Capabilities> |
| Game DVR Settings | The appCaptureSettings restricted capability allows apps to control the user settings for the Game DVR. This capability is required to use some APIs in the Windows.Media.Capture namespace. We don't recommend that you declare this capability in applications that you submit to the Microsoft Store. In most cases, the use of this capability won't be approved. |
| Cellular | The cellularDeviceControl restricted capability allows apps to have control over the cellular device. The cellularDeviceIdentity capability allows apps to access cellular identification data. The cellularMessaging capability allows apps to make use of SMS and RCS. These capabilities are required to use some APIs in the Windows.Devices.Sms namespaces. |
| Device Unlock | The deviceUnlock restricted capability allows apps to unlock a device for developer and enterprise sideloading scenarios. We don't recommend that you declare this capability in applications that you submit to the Microsoft Store. In most cases, the use of this capability won't be approved. |
| Dual SIM Tiles | The dualSimTiles restricted capability allows apps to create an additional app list entry on devices that have multiple SIMs. This capability is required to use some APIs in the Windows.UI.StartScreen namespace. |
| Enterprise Shared Storage | The enterpriseDeviceLockdown restricted capability allows apps to use the device lock down API and access the enterprise shared storage folders. We don't recommend that you declare this capability in applications that you submit to the Microsoft Store. In most cases, the use of this capability won't be approved. |
| System Input Injection | The inputInjectionBrokered restricted capability allows apps to inject various forms of input such as HID, touch, pen, keyboard or mouse into the system programmatically. This capability is typically used for collaboration apps that can take control of the system. For a PC, input injection from an app that has this capability will only be received by processes in the same App Container. <Capabilities><rescap:Capability Name="inputInjectionBrokered" /></Capabilities> |
| Observe Input* | The inputObservation restricted capability allows apps to observe various forms of raw input such as HID, touch, pen, keyboard, or mouse being received by the system regardless of its final destination. This capability and the APIs related to it are only available for use by select Microsoft partners. |
| Suppress Input | The inputSuppression restricted capability allows apps to suppress various forms of raw input such as HID, touch, pen, keyboard, or mouse from being received by the system. This capability and the APIs related to it are only available for use by select Microsoft partners. |
| VPN App | The networkingVpnProvider restricted capability allows apps to have full access to VPN features, including the ability to manage connections and provide VPN Plugin functionality. This capability is required to use some APIs in the Windows.Networking.Vpn namespace. |
| Other App Management | The packageManagement restricted capability allows apps to manage other apps directly. The packageQuery device capability allows apps to gather information about other apps. These capabilities are required to access some methods and properties in the PackageManager class. |
| Screen Projection | The screenDuplication restricted capability allows apps to project the screen on another device. This capability is required to use APIs in the DirectX namespace. We don't recommend that you declare this capability in applications that you submit to the Microsoft Store. In most cases, the use of this capability won't be approved. |
| User Principal Name | The userPrincipalName restricted capability allows apps to access the user principal name (UPN) of the current user. We don't recommend that you declare this capability in applications that you submit to the Microsoft Store. In most cases, the use of this capability won't be approved. |
| Wallet | The walletSystem restricted capability allows apps to have full access to the stored wallet cards. This capability is required to use APIs in the Windows.ApplicationModel.Wallet.System namespace. We don't recommend that you declare this capability in applications that you submit to the Microsoft Store. In most cases, the use of this capability won't be approved. |
| Location History | The locationHistory restricted capability was previously used to access historical location data on a device. This capability has been formally removed from Windows and is no longer available for use by applications. For all location-related scenarios, including real-time location access and compliance requirements (such as emergency services scenarios), use the supported Windows.Devices.Geolocation APIs instead. |
| App Close Confirmation | The confirmAppClose restricted capability allows apps to close themselves, their own windows, and delay the closing of their app. Apps may request this capability in Windows 10 version 1703 (build 10.0.15063) and beyond. In prior Windows 10 versions the capability is private and will cause app install to fail with error message "The requested capability can not be authorized for this application." |
| Call History* | The phoneCallHistory restricted capability allows apps to read the call history and to delete entries in the history. This capability is required to use APIs in the Windows.ApplicationModel.Chat namespace. We don't recommend that you declare this capability in applications that you submit to the Microsoft Store. In most cases, the use of this capability won't be approved. |
| System Level Appointment Access | The appointmentsSystem restricted capability allows apps to read and modify all appointments on the user's calendar. This capability is required to use APIs in the Windows.ApplicationModel.Appointment namespace. We don't recommend that you declare this capability in applications that you submit to the Microsoft Store. In most cases, the use of this capability won't be approved. |
| System Level Chat Message Access* | The chatSystem restricted capability allows apps to read and write all SMS and MMS messages. This capability is required to use APIs in the Windows.ApplicationModel.Chat namespace. We don't recommend that you declare this capability in applications that you submit to the Microsoft Store. In most cases, the use of this capability won't be approved. |
| System Level Contact Access | The contactsSystem restricted capability allows apps to read contact information that has been designated as restricted or sensitive and modify existing contact information. This capability is required to use APIs in the Windows.ApplicationModel.Chat namespace. We don't recommend that you declare this capability in applications that you submit to the Microsoft Store. In most cases, the use of this capability won't be approved. |
| Email Access | The email restricted capability allows apps to read, triage, and send user emails. This capability is required to use APIs in the Windows.ApplicationModel.Email namespace. We don't recommend that you declare this capability in applications that you submit to the Microsoft Store. In most cases, the use of this capability won't be approved. |
| System Level Email Access | The emailSystem restricted capability allows apps to read, triage, and send user restricted or sensitive emails. |