I want to write a simple dialog. When I press the button, it will first elevate and then perform some security sensitive tasks.

The way I have seen to elevate is to call ShellExecuteEx. However, I need to fill SHELLEXECUTEINFO::lpFile, so that it starts another application instead of elevate the process I am running. If it has to start a new process, that means I have to create another executable which is specific for performing those security sensitive tasks. I don't want to manage one more executable.

I am not familiar with UAC mechanism. Is it possible to elevate current process?