C ++: communication with a promoted child process on Windows

I have the following setup: The DLL I am writing is dynamically loaded at runtime and offers some API functionality for the host application. The host application is not running with administrator rights (and therefore my DLL is not).

Some of the tasks my DLL is supposed to do must be admin rights, although I must save and copy the files to the program files folder.

My current approach is to launch external applications via ShellExecute and the "runas" verb, which launches the UAC prompt. This especially means that multiple subsequent user-initiated actions will always result in an additional UAC prompt, which can be quite annoying.

So the idea would be to start a separate, elevated process once, which then runs in the background and receives the appropriate commands and executes them. This brings me to my question: what methods of communication are possible even between the raw process and its sublime childish process? Access to stdin seems to be denied due to obvious security reasons, but what about named pipes or shared memory? Do the same restrictions apply?

+3


source to share





All Articles