I would suggest to continue using the WMI service to get those information and either:
- make it a requirement in your project,
- or create a new service on instalation for which you require administrative privileges and start / stop the management service from there, or just use that service as for querying the WMI.
Or you can try to find some c++ projects, or assembly projects out there that will do this.
Me, for one, I've been using System.Management accomplish this, please take a look at this code projects project
, it might help.