Programmatically "elevate" my app for a particular task.

  • Thread starter Thread starter Ricardo Vazquez
  • Start date Start date
R

Ricardo Vazquez

Hi there!

I developed a MFC/VC++ 6.0 program that has to run at startup.
It monitors some Services which I also developed, giving the user
information on how they are running, and letting him or her start/stop this
Services.
The problem is that to start/stop a service I have to invoke ::OpenService
with SERVICE_START | SERVICE_QUERY_STATUS access: If I run the program as
administrator (elevated), then this works; but if I run it the standard way,
then the function returns "access denied".
I wouldn't mind to check the app so that it would always run as
administrator; but then, when I restart the computer, Windows Defender
"eats" my startup application: no elevated app can be placed at startup.
Windows Defender documentation then suggests to contact the software company
to see if they already have the same app with no need to have elevated
permisions!

A solution for me would be that my app starts as the standard user; BUT when
the person clicks on "stop sevice" UAC prompts him to approve the action!
This is: I would need to be able to programmatically get the UAC promt and
so elevate my app permisions from that moment on.
Is this possible? Which are the API functions I should need?
Can you think of any other solution to my problem?

Thank you very much!!

Cheers,

Ricardo Vazquez.
Madrid, Spain.
 
Back
Top