Fix it now
Windows Installer is refusing to change machine-wide state for an account that is not entitled to change it. 1925 is the install-time refusal; Microsoft publishes 1730 as the removal-time one. Neither is a fault in the package and neither is fixed by reinstalling anything.
whoami /groups
net localgroup Administrators
msiexec /i "C:\path\to\package.msi"
msiexec /x {ProductCode}
- Read the
whoami /groupsoutput. You need the Administrators group present and enabled, and a high mandatory integrity level; if either is missing you are not actually elevated. - Install from that prompt rather than from Explorer. To remove a product, use the product code rather than the original file.
- If elevation succeeds and the install still fails on a managed machine, run
gpresult /h %USERPROFILE%\Desktop\report.htmland read the Windows Installer settings under Administrative Templates.
Do not enable AlwaysInstallElevated to make the prompt go away. It lets any user install any package with full system rights and is a documented privilege-escalation weakness.
If the package installs or removes cleanly from the elevated prompt you are finished. If not, the next section explains what the installer is actually checking.
Why it happens
A Windows Installer package can install for everyone on the machine or for the current user only. A per-machine install writes into Program Files and the machine registry hive, so it needs administrative rights, and the installer checks for them before it starts rather than failing halfway through and rolling back. 1925 is that check failing, and its published text says so: you do not have sufficient privileges to complete this installation for all users of the machine.
1730 is the same check at removal time, and its published wording is narrower than most write-ups suggest – it is about removing an application, not installing one. The product was registered per-machine, so undoing it means undoing machine-wide changes. This is what bites when a machine set up by an administrator is handed to a standard user: the applications work perfectly and nothing can be removed.
740 and its HRESULT form 0x800702E4 are the operating system saying the same thing one layer down. Microsoft publishes 740 as ERROR_ELEVATION_REQUIRED, “The requested operation requires elevation”. You meet these when a script, a scheduled task or a wrapper executable launches setup without requesting elevation, so no prompt ever appears and the call is refused outright.
The installer was launched from a session that is not elevated
You have this one if Double-clicking the package shows the error immediately, and the same file installs from an administrative Command Prompt.
- Open an elevated Command Prompt or PowerShell session and run msiexec from there.
- For an executable wrapper, right-click it and choose Run as administrator.
- For a shortcut you use often, open its Properties, choose Advanced, and tick Run as administrator.
The account is not actually an administrator
You have this one if You elevate, the prompt asks for credentials rather than a simple yes, and the install still fails.
- List the local administrators with
net localgroup Administrators. - Check your own token with
whoami /groupsand look for the Administrators group. - If you are not a member, ask whoever owns the device to run the install or to add the account.
Windows Installer policy is restricting installs
You have this one if Elevation succeeds, you are demonstrably an administrator, and installs still fail on a domain-joined or managed machine.
- Run
gpresult /h %USERPROFILE%\Desktop\report.htmland read the Administrative Templates section for Windows Installer. - Look for settings that disable Windows Installer outright or prohibit user installs.
- If a policy is responsible, the change has to be made in the policy; there is no local override that survives the next refresh.
A package blocked by policy usually reports 1625 rather than 1925. Seeing 1625 tells you to stop looking at elevation and go and read the policy.
A deployment tool is running the package in the wrong context
You have this one if Manual installation works and the same package fails when pushed by a management platform, a startup script or a scheduled task.
- Configure the deployment to run in the system context rather than the user context.
- If the package exposes a property for a per-machine install, set it; not every package honours one, so check the vendor’s deployment notes rather than assuming.
- For a scheduled task, run it as SYSTEM and tick the option to run with highest privileges.
- Judge the result from the return code the tool records rather than from anything on screen.
Full reference
The published wording
| Number | Published message |
|---|---|
| 1730 | You must be an Administrator to remove this application. To remove this application, you can log on as an administrator, or contact your technical support group for assistance. |
| 1925 | You do not have sufficient privileges to complete this installation for all users of the machine. Log on as administrator and then retry this installation. |
| 740 | ERROR_ELEVATION_REQUIRED: The requested operation requires elevation. |
| 0x800702E4 | The same thing as an HRESULT: 0x8007 is the Win32 facility and 0x2E4 is 740. |
That last row is worth internalising because it generalises. Any code of the form 0x8007xxxx is a Win32 error wrapped as an HRESULT, and the last four hexadecimal digits converted to decimal give you the number to look up. It turns a great many opaque installer codes into something you can read.
Which situation you are in
| What you see | What it means |
|---|---|
| 1925 on a fresh install | The package is per-machine and the session is not elevated |
| 1730 when removing software | The product was installed per-machine; removal needs the same rights |
| 740 or 0x800702E4 from a script | Setup was started without an elevation request, so nothing prompted |
| No UAC prompt at all | UAC is configured not to prompt, or a policy suppresses elevation for this account |
| It fails only under a deployment tool | The tool is running the package in the user context rather than as SYSTEM |
| It works for one administrator and not another | One account is in the local Administrators group and the other is not |
Removing a product without the original media
Uninstalling a per-machine product needs its product code, not its MSI file. The uninstall entries under the registry list installed products, and MSI-based ones are keyed by product code in braces. Reading that branch is safe and read-only:
reg query "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall" /s /f DisplayName
reg query "HKLM\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall" /s /f DisplayName
The second command is the 32-bit view on 64-bit Windows, and it is where most desktop applications actually appear. Take the key name in braces and pass it to msiexec /x.
msiexec /x removes the product and its registration immediately, and with /qn there is no confirmation at all. Check the product code before you run it, and make sure anything you need has been backed up.
What a standard user can and cannot do
- A package authored for per-user installation writes into the user profile and the user hive only, and needs no elevation. Whether one exists is decided by the package author.
- A per-machine package cannot be made to install per-user by passing a property at the command line. If the author did not build it that way, it does not work that way.
- Windows Home enforces the same rules as Pro. What it lacks is the local Group Policy editor, so installer policy is inspected through the registry or your management tooling instead.
- Running as the built-in Administrator bypasses the filtered token, but it is not a fix for a policy restriction and it is not a supported way to run day to day.
- If a machine needs software installed by people who are not administrators, that is a deployment design question, not an error to work around.
Every code this article covers
| Code | What it points at | Source |
|---|---|---|
1730 |
Administrative rights are required to remove this application | Microsoft Learn |
740 |
ERROR_ELEVATION_REQUIRED: the requested operation requires elevation | Microsoft Learn |
0x800702E4 |
The HRESULT form of Win32 740, the same elevation requirement | Microsoft Learn |
1925 |
The account does not have sufficient privileges to install for all users of the machine | Microsoft Learn |
Confirm the fix worked
- Rerun the install from an elevated prompt and confirm it finishes without an error dialog.
- Check the product appears in Settings, Apps, Installed apps.
- From the same elevated prompt, confirm
msiexec /x {ProductCode}is allowed against a test package. - If the failure was in a deployment tool, rerun the deployment and confirm the tool records a success code rather than 1925.
- Run
whoami /groupsonce more and keep a note of what a genuinely elevated session looks like on this machine.
Questions people ask about this
Does this need a licence or a paid tool?
No. This is entirely about which account is running setup and whether it is elevated. No product key, edition upgrade or paid utility changes anything.
Can a standard user install anything at all?
Yes, if the package supports a per-user install. Such packages write into the user profile and the user hive only. Whether that option exists is decided by the package author, not by Windows.
Why does the elevation prompt never appear?
Either the launching process did not request elevation, which produces 740, or User Account Control is configured to deny elevation for standard users so the request fails rather than prompting.
Is 1730 also an install error?
Microsoft’s published text for 1730 is about removing an application. The install-time refusal is 1925. If you are seeing 1730 during what you think is an install, the transaction has almost certainly reached the point of removing an older version.
Is Windows Home missing something that causes this?
No. Home enforces the same rules. What it lacks is the local Group Policy editor, so you inspect installer policy through the registry or your management tooling instead of gpedit.
