Multiple context menu run as administrator through registry editor

0

I am trying to create two context menus for .EXE files in Windows 8, both of which will need admin privileges. As I can see in registry, HKEY_CLASSES_ROOT\exefile\shell\runas can only have one command and it is being used by the "Run as administrator" context menu. Right now, I am using this code in a .reg file:

[HKEY_CLASSES_ROOT\exefile\shell\Low Priority Run]
"HasLUAShield"=""
"MUIVerb"="&Low Resource Start"

[HKEY_CLASSES_ROOT\exefile\shell\Low Priority Run\command]
@="cmd.exe /c start /low /affinity 2 \"\" \"%1\""

[HKEY_CLASSES_ROOT\exefile\shell\Boost Application]
"HasLUAShield"=""
"MUIVerb"="&Boost Application"

[HKEY_CLASSES_ROOT\exefile\shell\Boost Application\command]
@="cmd.exe /c start /realtime \"\" \"%1\""

The HasLUAShield flag seems to be only displaying fancy shield and is not elevating my command to run as administrator.

Why I want them to be ran as administrator? Because when not ran as administrator, the "realtime" priority is not given, instead just "high" priority is allotted to the exe in the Boost Application menu. And in the Low Resource Start too, the exe files contained in (for example, Program Files folder) run as just normal (Not even low priority, neither CPU 1 Affinity).

Also, I noticed in some "command" entries in registry, there is a %* at the end. What does that %* mean?

Ajay Raghav

Posted 2013-03-23T12:42:41.097

Reputation: 101

HasLUAShield does not elevate. It merely says that you want the decoration. If you want to elevate, then you need to do the elevation yourself, say by calling ShellExecuteEx with the runas verb. – None – 2013-03-23T13:51:48.963

%* is batch for "all of the command-line arguments" – None – 2013-03-23T14:05:48.700

@RaymondChen, means it is impossible about what I am trying without using/creating another program to handle it? Because it would rather slowdown the start of program in the Boost Application menu. – None – 2013-03-23T14:54:15.687

@PeterWright, thanks. That means %* would simply transfer the arguments passed onto the original file that is launched. – None – 2013-03-23T14:56:29.163

StackOverflow is for programming problems. If you don't want to do programming, then try Superuser. – None – 2013-03-23T15:44:45.057

@RaymondChen It is not about programming or not. I can program it too but it will eventually defer the results bro because of the long chain formation. I am sorry if I somehow meant that I don't want to program. – None – 2013-03-23T15:52:50.090

Answers

0

Hey there I managed to go around this problem of yours by :

  1. Create a copy of cmd.exe named cmd1.exe. Go with both C:\Windows\System32 and C:\Windows\SysWOW64.
  2. In the Compatibility tab of the cmd1.exe, check Run this program as an administrator in Properties menu.
  3. Change the registry keys of yours from cmd.exe to cmd1.exe.
  4. Run a program through your Boost Application context and a UAC confirmation pops up and there you go. I guess there must be a command or argument you can use but,this is a good way to effortless by-pass your problem! Worked fine on my VM machine running Windows 8.1.

AperiV

Posted 2013-03-23T12:42:41.097

Reputation: 13