I'm already doing what the last link recommends - it's what makes iReboot request elevation in the first place and not simply fail when you try to run it with UAC installed.
At the moment, this is what iReboot does.
Run. Put in a request for elevation. If not given, exit. If given, save it in a safe place.
When iReboot needs to modify bootloader settings (every time you change an option in it), it'll reuse the saved elevation.
The (very crappy) way MS designed UAC, my only other option is as follows:
Run iReboot without elevation (no problem running it at startup now). When a user attempts to change an iReboot option, ask for elevation. When a user changes another option, ask for elevation again.
I opted for the former, because the latter can quickly get very,
very annoying for end users.
Unfortunately (unlike on Linux) Microsoft has not made it possible for users to mark an application as trusted and that though it requires admin rights it can be run by normal users.
This option exists in Windows Server 2003, but not in Vista or LH Server.
I am genuinely stumped, because Microsoft did this on purpose. The only way around it is to install kernel drivers, and I'm not about to do that!
Here's where the UAC program manager touts this as an amazing and ingenious bit of research and an awesome way to give users an all-around better experience:
Elevations Are Now Blocked in the User's Logon Path - KezNews.com
I want some of what he's smoking..... He recommends running programs "asInvoker" meaning the program itself checks what rights a user has and only lets them do stuff within those boundaries....
But WTF do you do when your program does just one thing, and it requires admin rights??
Obviously he never bothered to write a system-managment program on Vista!