Is there any way that I can force a program that normally requires administrator privileges (via UAC) to run without them? (ie: no UAC prompt and no system-wide access.)

Added: Without modifying the executable itself.


In spite of James's answer, I have found a few ways that it can almost be done:

  1. By modifying the executable I can remove the trustInfo entry from the manifest (or the manifest entirely, so I can use an external one), allowing the program to start without UAC. Unfortunately this modifies the executable, so it exits shortly after due to an internal checksum test.
  2. By using Process Explorer I can launch it as a Limited User. However this seems to limit it significantly more than I would like (it runs like Protected Mode IE and so can access significantly less than what my standard un-elevated user can).
link|improve this question
You specify not modifying the executable, yet modifying the .exe is one of your attempted ways? – ekaj Apr 20 at 4:39
@ekaj I only specified that after I found out that it wouldn't work ;) – Andrew Russell Apr 21 at 15:29
Could you maybe specify the program, even if you don't use it anymore? That might help people to know what it is trying to access that requires admin privileges – ekaj Apr 21 at 16:45
@ekaj Unfortunately not. However it's not especially relevant: UAC is triggered by a program asking for elevation during process creation (the usual way - as in this case - is with a manifest). Once a process is started, it cannot change its elevation status - no matter what restricted resources it tries to access. – Andrew Russell Apr 22 at 4:59
feedback

4 Answers

I hope I'm not too late to the party, but I was looking for a similar question and without seeing an answer here I found out that Windows' builtin RunAs command can do that with /trustlevel switch.

RUNAS /trustlevel:<TrustLevel> program

/trustlevel       <Level> should be one of levels enumerated
                  in /showtrustlevels.
/showtrustlevels  displays the trust levels that can be used
                  as arguments to /trustlevel.

This worked in my case. Ironically, starting a program explicitly without elevation requires an elevated command prompt. Go figure. :) I hope it helps you.

link|improve this answer
feedback

No, if a program requires UAC then it is trying to access something outside of its sandbox. The program will not correctly run without the elevated access.

If you just want to get rid of the notification, you can disable UAC.

Disable UAC on Windows Vista: Start, type "user". Click on "User Accounts". On the window that pops up, click on "User Account Control Settings" and then Turn off UAC.

Disable UAC on Windows 7: Start, type "user". Click on "User Account Control Settings". Drag the choice bar all the way to the bottom to "Never Notify."

link|improve this answer
2  
Disabling UAC is not what I am trying to achieve. Also: your description of how UAC works is correct only in a general sense. It's possible for a program to request UAC when it doesn't strictly need it. And UAC happens before a program starts - once its running, if it steps beyond its permissions, it will simply get permission-denied errors. – Andrew Russell Aug 4 '10 at 14:32
Semantics aside, you can't "disable" UAC notifications for a specific program while still limiting their access. – James Watt Aug 4 '10 at 14:47
James: Actually - it looks like you can - I've updated my question. – Andrew Russell Aug 4 '10 at 16:11
Short of modifying the program code itself, I would be interested to know of a working solution if you find one. – James Watt Aug 5 '10 at 5:17
feedback

I solved this problem today using the MS application customization toolkit.

I followed the instructions in a tech republic article: http://www.techrepublic.com/blog/window-on-windows/selectively-disable-uac-for-your-trusted-vista-applications/635

Basically:

1) you get the tookit from MS here .

2) Click Fix

3) Choose the RunAsInvoker option

4) Right Click the fix and choose Install

link|improve this answer
feedback

I fixed this problem by going changing the permissions on the folder that contained the program.

I added each user that will run that program and gave them "full control" priviledges. That took care of the problem and I left the "run as admin" unchecked.

I don't have any security concerns for the users who will be running the program.

link|improve this answer
feedback

Your Answer

 
or
required, but never shown

Not the answer you're looking for? Browse other questions tagged or ask your own question.