Overview
Stops Mass Effect running as administrator and stops the UAC pop-up on game start.Allows correct use of the steam overlay and steam controller.Also fixes the non-start issue when running from the steam library “Play” button.
Defining the problem
Just posting here a working solution as of 4 Jan 2018 to get both the Steam Overlay and Steam Controller working with Mass Effect, as well as most importantly getting the game to start in the first place.
The problem is that Mass Effect wants to run as admin, but this then screws around with the Steam side of things. The solution most people come to is to run steam as admin because then Steam and Mass Effect have the same privileges, but this can screw around with other games and also it was preventing my shared family libraries from working correctly. Running Steam as admin is not a good long-term solution, and there are far too many clicks to do to get the game to run if you have to close and restart steam every time you change to and from playing Mass Effect.
The BETTER solution is to stop Mass Effect from running as admin in the first place.
I did this with the steam version of Mass Effect on a Windows 10 machine. It may work with Origin and store versions too.
After you do this fix you can firstly run the game properly, and also Shift-Tab or use the Controller button to get to the overlay, and there is correct controller support in-game. This means chat, screenshots, in-game browsing, and steam controller (and maybe even non-steam game or origin-in-steam method) will work as per every other native steam game.
I’d hazard a guess that 99% of the problems people have running this program on Windows 10 can be sorted by this quick little fix.
Set Mass Effect to “RunAsInvoker” in the registry
This is all you need to do. Set Mass Effect to “RunAsInvoker” in the registry.
I have edited the quote below from the original to use my path for MassEffect, to save you the time when you retype your own path.
Credit to palswim from superuser.com
Originally posted by palswim:If you have a particular application that you want to always run without UAC, you can target it with the Registry (add the text to a REG file and import it into the Registry):
Windows Registry Editor Version 5.00 [HKEY_CURRENT_USERSoftwareMicrosoftWindows NTCurrentVersionAppCompatFlagsLayers] “D:SteamLibrarysteamappscommonMass EffectBinariesMassEffect.exe”=”RunAsInvoker”Unlike this answer, this solution requires no alternate click or change to user interaction.
Microsoft calls this process adding the RunAsInvoker “Compatibility Shim”.
For those of you who aren’t super confident editing your registry, have a look at this handy tip from dshepp.
Originally posted by dshepp83:If you have set Mass Effect exe to run as admin the REG key string will already be there under
HKEY_CURRENT_USERSoftwareMicrosoftWindows NTCurrentVersionAppCompatFlagsLayers
with Windows10You can change the Value data from ~ RUNASADMIN to ~ RUNASINVOKER
A lot of googling took me here:
which then took me here where I found the answer:
[link]
Thank you palswim!
Further reading
[link] [link]RunAsInvoker vs RunAsAdmin
Originally posted by Raymond Chen – MSFT:What RunAsInvoker does is to ignore any elevation request in the application’s manifest and treat the manifest as if it had said
<requestedExecutionLevel level=”asInvoker” uiAccess=”false” />
which is the default behavior. The program simply runs with the same privileges as the code that launched it. There is no attempt to elevate.This means that if you run the program from an elevated command prompt, then the program stays elevated. If you run the program from a non-elevated command prompt, then the program stays non-elevated.
Try it. Make sure RegEdit is not already running, then open a non-elevated command prompt and set __COMPAT_LAYER=RunAsInvoker, and then run regedit from that command prompt. The resulting copy of RegEdit is running without administrator privileges. You can see this by trying to edit something in HKLM.
While it’s true that RunAsInvoker suppresses UAC prompts, that’s true because RunAsInvoker doesn’t perform any elevation. If you aren’t performing any elevation, then naturally you don’t need an elevation prompt. If the resulting process is elevated, then it means that the calling process was already elevated. You were already on the other side of the airtight hatchway.
Originally posted by jagadeish:RunAsInvoker: The application should run with the same Windows privileges and user rights as the parent process. This setting is the equivalent as not having an application compatibility database for the application. The application launches with the same privileges as the parent process launching it, which reduces the application’s security exposure. This is because for most applications, the parent is Explorer.exe, which runs as a Standard User application.
RunAsHighest: The application should run with the highest Windows privileges and user rights the current user can obtain, but the application does not necessarily require the user to be an administrator. The application can be run by both administrators and standard users, and it adapts its behavior based on the user’s privileges and user rights. The application requires privileges and user rights greater those of a standard user, but it does not require the user to be a member of the local Administrators group.
RunAsAdmin: The application should run only for administrators, must be launched with a full administrator access token, and will not run correctly in a standard user context. This requested execution level marking is reserved for pre-Windows Vista applications that require the user to be a member of the local Administrators group.
Credits
Please credit these users for their work. All I did was apply their explanations and tips to the UAC problem that Mass Effect – Steam has on Windows 10.
palswim
Raymond Chen – MSFT
jagadeish
Cheers!