<p>For my C# app, I don't want to always prompt for elevation on application start, but if they choose an output path that is UAC protected then I need to request elevation.</p>

<p>So, how do I check if a path is UAC protected and then how do I request elevation mid-execution?</p>

Requesting elevation mid-execution requires that you either:
Use a COM control that's elevated, which will put up a prompt
Start a second process that is elevated from the start.
In .NET, there is currently no way to elevate a running process; you have to do one of the hackery things above, but all that does is give the user the appearance that the current process is being elevated.
The only way I can think of to check if a path is UAC elevated is to try to do some trivial write to it while you're in an un-elevated state, catch the exception, elevate and try again.