Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Bypassing elevation when launching a new process

OK, here's my problem: I'm trying to launch a third-party application. This application is apparently configured to require elevation, presumably via an embedded manifest. My program is running in the context of a non-administrative user, and I want the third-party application to run in the same context.

When I call CreateProcess it returns error code 740, "The requested operation requires elevation."

I've tried the CREATE_PRESERVE_CODE_AUTHZ_LEVEL flag which sounded relevant but it made no difference.

The third party application does work without administrator privilege, e.g., if I disable UAC and then run it as a non-administrator.

Thanks in advance for any tips/ideas you may have.

like image 733
Harry Johnston Avatar asked Dec 28 '22 15:12

Harry Johnston


1 Answers

Set the environment variable __compat_layer for your process to RunAsInvoker. If this environment variable is set, CreateProcess will succeed.

You can use the SetEnvironmentVariable function for this purpose.

like image 152
Norbert Willhelm Avatar answered Jan 08 '23 08:01

Norbert Willhelm