The current setup is APP1 is running from Startup folder as "AsInvoker". It was launching APP2 "HighestAvailable" using the Run command but that does not work so I will change this to ShellExecute instead.
The Logon User Account is an Administrator but App1 does not need to be an Administrator so as long as App1 can launch App2 using ShellExecute then I should be fine staying as "AsInvoker". But the documentation implies both applications need to be "HighestAvailable" for stop the UAC Prompt but you can't run "HighestAvailable" from Startup Folder.
Sorry, You simply cannot launch an elevated app from the Startup Folder in Windows with UAC on.
Setting up a Scheduled Task is one workaround described, what if I setup APP1 as a Windows Service instead? I know this produces problems with User Interfaces and Desktop Access but can a Service be started as "HighestAvailable"?
What I want to do is option B in the MSDN trouble Shooting flowchart which is to have APP1 running from Startup and calling App2 with "HighestAvailable" but I may have to setup APP3 and have APP1 from StartUp launching App2 which in turn launches App3 with "HighestAvailable"?.
I have access to a Windows 7 machine tomorrow so I will try out some variations.
Here is my understanding of the situation: Some applications must have both standard user and administrative privileges to function. These applications are often called "mixed-mode" applications since they include both standard user mode and administrator mode functionality. Here are some possible ways to deal with the situation:
Option 1 (unprompted)Use the Task Scheduler to run your Elevated script as the Local System account in service mode rather than as interactive tasks in the user's session, then the scripts will have admin rights locally but won't have any identity on the network except for that of the computer on which the script is running. Here is a UAC-friendly method to have your WinBatch script Run As Administrator.
http://techsupt.winbatch.com/webcgi/webbatch.exe?techsupt/tsleft.web+WinBatch/UAC+Run~As~Admin~WinBatch~Script~With~UAC~On.txtOption 2 (unprompted)App1 (AsInvoker ) can be run at startup and can handle standard user operations, and App2 can be a Windows Service (no user interface)
If necessary, the service can communicate with the standard user application.
Option 3 (prompted)[/App1 (AsInvoker ) can be run at startup and handle standard operations, then it can place itself in the task bar (IntControl 1007) waiting for a user to click, once the icon is clicked it could ShellExecute the elevated App2(HighestAvailable). However you will be prompted for elevation.