You can make a dummy "LocalSystem" service that does the updating. This way you're bypassing the UAC system (i.e. limited user can update your app in the Program Files folder without getting admin permission). For instance, you can use the AutomaticUpdaterBackend in a C# or VB.NET service or you can use wyUpdate as a standalone updater from a service written in any other language.
There are a few caveats you need to be aware of:
- You can't update your app while it's running -- you'll have to wait for main app to close before the dummy service commences updating.
- Any applications you execute as part of your update will run in the "System" context. That is, even GUI programs won't be visible to the user.
Tell me if this helps.