Is there a way for an app to present the user with the UAC prompt only once, upon first running. Thereafter, no further prompting.
In other words, I understand that
Update: Oops I originally misread the question and interpreted it as "prompt only once, on the very first run" instead of "only once every, every time it's run" (edited accordingly below).
You can't grant an application Administrator rights for all time, that does indeed go against the design of UAC.
However, one way around this is to create a service which your app communicates with, which is able to run in the background and perform tasks with elevated permissions without the main application needing elevated permissions.
A service will only need to prompt once, when it is installed.
If that sounds like too much work, you could have a look at bundling with the SkipUAC utility which uses an approach like this to allow users to start applications without being prompted for UAC on each startup.
My Original Answer:
If the executable has a manifest with requireAdministrator set it should trigger a UAC prompt only on each initial startup, but not after that (i.e. all operations, including other apps launched by the initial process will inherit the elevated permissions, but if you quit the application and start it again the prompt will once again appear).
You can set up a manifest for an EXE via the IDE in Visual Studio 2008/2010, or using a command line utility that comes with the most recent service pack for VS 2005 (this can be integrated into the build step to automate the process, but is a bit of a fudge in 2005).
I would search the web for "UAC" and "manifest" for more information, it's reasonably well documented in the online MSDN documentation (once know you to look for it).
This works equally in Windows 7 and Windows Vista.