C ++: communication avec un processus enfant sur Windows

J’ai l’installation suivante: L’écriture de DLL I est chargée dynamicment à l’exécution et offre certaines fonctionnalités de type API à l’application hôte. L’application hôte ne fonctionne pas avec les droits d’administrateur (et par conséquent, ma DLL n’est pas non plus).

Certaines tâches que ma DLL doit remplir nécessitent des droits d’administrateur, en particulier je dois enregistrer et copier des fichiers dans le dossier des fichiers du programme.

Mon approche actuelle consiste à lancer des applications externes via ShellExecute et le verbe “runas”, qui déclenche l’invite UAC. Cela signifie en particulier que plusieurs actions ultérieures déclenchées par l’utilisateur se traduiront toujours par une invite UAC supplémentaire, ce qui pourrait être assez ennuyeux.

L’idée serait donc de lancer un processus distinct, élevé une fois , qui s’exécute alors en arrière-plan et reçoit les commandes respectives et les exécute. Cela m’amène à ma question: quelles méthodes de communication sont même possibles entre un processus non évalué et son processus enfant élevé? L’access à stdin semble être interdit pour des raisons de sécurité évidentes, mais qu’en est-il des canaux nommés ou de la mémoire partagée? Les mêmes ressortingctions s’appliquent-elles?