I've been wondering what the difference between embedding
<requestedExecutionLevel level="asInvoker" uiAccess="false" />
and
<requestedExecutionLevel level="highestAvailable" uiAccess="false" />
in your application's manifest is.
This is described on MSDN:
Basically, "asInvoker" will use the user's default security settings. It's described as "The application runs with the same access token as the parent process.", which means the same security token is used as the calling process, which is typically the desktop shell (or the process that launches this, if you launch your app from another program).
Using "highestAvailable" will cause the application to run using the highest priveledges the user can obtain. If they're an administrator, for example, they'll get a UAC prompt and the app will run with admin rights. However, if they're a normal user, they'll get normal security settings, etc.
In general, you'll want to use "asInvoker" unless you have a specific reason to request more rights.