How to Set Screen Resolution in Power Automate Desktop
Set screen resolution correctly in attended and unattended Power Automate Desktop flows, including flow properties, registry settings, DPI, troubleshooting, and restoration.
Use the method that matches the run type: for an attended desktop flow, add the Workstation Set screen resolution action. For an unattended run, set Display resolution for unattended runs in the desktop flow properties, or configure the machine-wide Windows registry default. The attended action does not change resolution in the documented remote-session case where the user cannot manually change it.
Resolution and DPI scale affect image recognition, selectors, window layout, and screenshots. Match the unattended machine to the environment where you built the flow, and verify both resolution and scale before diagnosing an automation failure.
Choose the correct configuration method
| Method | Use it for | Scope | Main limitation |
|---|---|---|---|
| Workstation Set screen resolution | Attended flows | Selected monitor during the flow | Requires monitor number, width, height, bit count, and frequency; ineffective in some remote sessions |
| Flow property | Unattended runs | One desktop flow | Overrides registry settings |
| Windows registry | Unattended machine defaults | Machine-wide | 64-bit keys can override the documented 32-bit path |
UIFlowService.exe.config |
Older unattended setups | Service configuration | Deprecated and overwritten by upgrades |
Set resolution in an attended desktop flow
- Open the desktop flow in Power Automate Desktop.
- Under Actions, open Workstation and add Set screen resolution.
- Select the monitor number.
- Enter the supported width, height, bit count, and frequency.
- Use Available screen resolutions to inspect values supported by that monitor.
- Run the flow while the user is connected to the console session and can change the display resolution manually.
Use Get screen resolution before changing anything when the flow must restore the original display state. Save the returned width, height, bit depth, and refresh frequency in variables, then pass those variables to a second Set screen resolution action near the end of the flow.
Attended restore pattern
- Add Get screen resolution for the target monitor.
- Store the returned values in variables such as
%OriginalWidth%,%OriginalHeight%,%OriginalBits%, and%OriginalFrequency%. - Set the temporary resolution required by the application.
- Perform the UI work.
- In an error-handling or cleanup branch, call Set screen resolution with the saved values.
Microsoft documents that the action has no effect in remote sessions, including unattended scenarios using remote desktop clients, when users cannot manually change the resolution. A successful action step therefore does not prove that the remote display changed.
Set resolution for an unattended run
- Open the desktop flow details in Power Automate.
- Choose Edit.
- Open Flow properties.
- Enable Display resolution for unattended runs.
- Select a listed resolution or enter a custom width and height.
- Save the flow and run it again.
Microsoft recommends using the resolution of the machine on which the flow was developed. The flow property takes precedence over registry settings. If the parent flow calls child desktop flows, the parent resolution applies to the child flows. It also applies when an existing Windows session is reused.
When to use a custom value
Use a custom value when the application requires a supported size that is not in the list, or when you are standardizing several unattended machines. Confirm that the target display or virtual display supports the dimensions. A value such as 1920 by 1080 at 100% scale is a Microsoft documentation example, not a universal requirement.
Configure the machine-wide registry default
Microsoft documents registry configuration for unattended flows beginning with Power Automate flows version 2.35. The installer writes the settings in the 32-bit registry path:
HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Power Automate Desktop\Global\Screen
Create or update these DWORD values using decimal base:
| Value | Meaning | Example |
|---|---|---|
ScreenResolutionEnabled |
Enables the custom settings | 1 |
Width |
Screen width in pixels | 1920 |
Height |
Screen height in pixels | 1080 |
Scale |
Display scale percentage | 100 |
PowerShell example
Run PowerShell as administrator on the machine that executes the unattended flow. Back up the registry key first according to your change-management process.
$key = 'HKLM:\SOFTWARE\WOW6432Node\Microsoft\Power Automate Desktop\Global\Screen'
New-Item -Path $key -Force | Out-Null
New-ItemProperty -Path $key -Name ScreenResolutionEnabled -PropertyType DWord -Value 1 -Force | Out-Null
New-ItemProperty -Path $key -Name Width -PropertyType DWord -Value 1920 -Force | Out-Null
New-ItemProperty -Path $key -Name Height -PropertyType DWord -Value 1080 -Force | Out-Null
New-ItemProperty -Path $key -Name Scale -PropertyType DWord -Value 100 -Force | Out-Null
Also check the 64-bit path:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Power Automate Desktop\Global\Screen
If corresponding screen keys exist there, Microsoft says they take precedence. Avoid leaving conflicting values in both locations. A per-flow resolution still overrides the registry.
Do not use the deprecated configuration-file method for new setups
Older guidance describes editing UIFlowService.exe.config, enabling Microsoft.Flow.RPA.UIFlowService.ScreenDefaultResolutionEnabled, setting width, height, and scale keys, and restarting the UIFlowService service. Microsoft marks this method deprecated and warns that upgrades can overwrite the file with defaults. Prefer the flow property or registry configuration.
Resolution, DPI scale, and automation reliability
Resolution changes the number and position of pixels available to an application. DPI scaling changes how Windows and DPI-aware applications size controls. Image recognition is especially sensitive: Microsoft recommends matching the source screen’s exact resolution and DPI scale on the target machine.
- Keep development and unattended width and height identical.
- Keep display scale identical, commonly 100% when the application was built and tested at that scale.
- Check whether the application is DPI-aware.
- Maximize or restore windows consistently before using image recognition.
- Prefer robust selectors over coordinates when the application supports them.
- Capture the original settings if an attended flow must restore the user’s desktop.
How to diagnose a resolution failure
- Record the attended machine’s width, height, and scale.
- Record the unattended session’s values at runtime.
- Confirm that the flow property is enabled and saved.
- Check both 32-bit and 64-bit registry paths.
- Verify that no parent flow overrides the child flow’s expectation.
- Check the application’s DPI awareness and window state.
- Review failure screenshots and compare the position and size of the target element.
Troubleshooting
The Set screen resolution action runs but nothing changes
Cause: The flow is running in a remote or unattended session where the user cannot manually change display settings. Fix: Configure the unattended flow property or registry settings instead, and verify the session’s effective resolution.
The flow uses the wrong resolution even though the registry is correct
Cause: A per-flow setting overrides the registry, or a 64-bit registry key overrides the 32-bit key. Fix: Inspect the flow properties first, then check both registry paths and remove conflicting duplicates.
Image recognition cannot find a control
Cause: Resolution, DPI scale, application zoom, or window state differs from development. Fix: Match resolution and scale, normalize the window state, and recapture reference images at the target settings.
Selectors fail only in unattended runs
Cause: The unattended desktop renders a different layout or the application is not DPI-aware. Fix: Compare attended and unattended screenshots, set the documented flow resolution, check DPI scaling, and replace fragile coordinate-based steps with stable selectors where possible.
The configured value is rejected or produces a blank display
Cause: The virtual or physical display does not support the requested dimensions. Fix: Choose a value reported by Available screen resolutions or by the target machine, then test with a safe fallback.
Settings disappear after an upgrade
Cause: The deprecated UIFlowService.exe.config method can be overwritten. Fix: Move the configuration to the flow property or registry method.
Operational checklist
- Choose attended action or unattended configuration based on the run type.
- Match width, height, and DPI scale to the development environment.
- Set the resolution on the parent flow when child flows share the session.
- Check both registry paths when machine defaults appear ineffective.
- Back up registry keys before editing.
- Use cleanup logic to restore attended users’ original settings.
- Keep a failure screenshot and runtime resolution in diagnostic logs.
Performance, reliability, and cost considerations
Changing resolution adds setup work and can cause windows to redraw. Set it once at the start of a flow rather than repeatedly between actions. Standardizing one supported resolution across unattended machines reduces layout differences and makes image assets reusable. Registry configuration avoids adding a resolution-change action to every flow, while a per-flow property is safer when different flows require different display sizes.
Power Automate Desktop’s documented resolution settings do not create a separate screenshot service charge. The practical cost is additional run time, maintenance, and failures caused by mismatched environments.
Or skip the browser setup
If your goal is to capture a webpage at a known viewport rather than automate a Windows desktop, ScreenshotNeo returns a screenshot or PDF from one request. It accepts viewport and device options, full-page capture, CSS selectors, custom CSS and JavaScript, dark mode, retina scale, waits, blocking rules, headers, cookies, user agents, caching, signed links, async jobs, bulk capture, and PDF settings. See the ScreenshotNeo documentation for the complete API.
curl -G "https://api.screenshotneo.com/v1/shot" -d access_key=YOUR_API_KEY --data-urlencode url=https://stripe.com -o shot.webp
import requests
r = requests.get("https://api.screenshotneo.com/v1/shot", params={"access_key": "YOUR_API_KEY", "url": "https://stripe.com"}, timeout=90)
open("shot.webp", "wb").write(r.content)
const q = new URLSearchParams({ access_key: 'YOUR_API_KEY', url: 'https://stripe.com' });
const res = await fetch(`https://api.screenshotneo.com/v1/shot?${q}`);
Cookie banners, newsletter popups, and chat widgets are removed before the shot. Bot checks, blank pages, failed loads, timeouts, and cache hits are never billed, and response headers identify the page verdict and billing status. An MCP server lets AI agents use take_screenshot, get_page_info, and capture_pdf. The free plan includes 1,000 screenshots a month with no card; paid plans start at $5 for 3,000 shots. Create a free ScreenshotNeo account.
FAQ
Can I set resolution for only one monitor?
Yes. The attended Workstation action includes a monitor number. For unattended runs, use the flow or machine configuration supported by the environment.
Does the flow property override the registry?
Yes. The per-flow unattended resolution takes precedence over registry settings.
Do child flows inherit the resolution?
Yes. A parent flow’s selected unattended resolution applies to child flows and reused Windows sessions.
Is 1920×1080 at 100% required?
No. Those are Microsoft documentation examples. Use a resolution and scale supported by the target machine and consistent with development.
Which setting should I check first?
For an unattended run, check the flow property first, then the 64-bit and 32-bit registry paths. For an attended run, check the monitor number and supported values returned by the workstation actions.


