J'ai des parties de mon programme qui nécessitent un accès administratif (les paramètres qui affectent tous les utilisateurs, stockés dans HKLM, et sont limités à l'accès administratif).Comment faire IPC avec élévation UAC en toute sécurité?
j'ai changé mon logiciel pour indiquer que l'altitude est nécessaire:
En réponse, je vais lancer mon exécutable en demande d'élévation:
SHELLEXECUTEINFO shExecInfo;
shExecInfo.cbSize = sizeof(SHELLEXECUTEINFO);
shExecInfo.fMask = NULL;
shExecInfo.hwnd = NULL;
shExecInfo.lpVerb = L"runas";
shExecInfo.lpFile = L"myapp.exe";
shExecInfo.lpParameters = NULL;
shExecInfo.lpDirectory = NULL;
shExecInfo.nShow = SW_MAXIMIZE;
shExecInfo.hInstApp = NULL;
ShellExecuteEx(&shExecInfo);
ce que je aller faire est de passer le nom d'un tuyau nommé sur la ligne de commande, en me disant où il peut se connecter à nouveau afin d'obtenir des instructions sur ce qu'il est censé faire:
myapp.exe /uac 6C844671-E262-46DD-939E-47517F105FB6
(Oui, en utilisant un GUID comme nom du tuyau).
A travers ce tuyau, je voudrais dire à mon clone élevé que la base de données, par exemple:
- quelle base de données serveur, il est censé être connecté à
- l'utilisateur qu'il doit dire faire les changements
- la chose Je devais ajouter/modifier/supprimer
Mon souci était alors que n'importe qui pouvait lancer myapp.exe
, et ensuite le nourrir toutes sortes de demandes - les choses que je ne veux pas qu'il d o causer i n'a pas le lancer, par exemple:
MaliciousProgram.exe:
ShellExecute("myapp.exe /uac HahaYouDoWhatISayNow")
Je me souviens au cours de la bêta Longhorn il y avait une vidéo Channel9, ou un article, en parlant de contrôle de compte et les dangers du mal de faire IPC (communication inter-processus). Je ne veux pas réinventer la roue, en faisant des erreurs de sécurité qui ont déjà été résolues. Mais je ne peux pas trouver de conseils existants sur la façon "correcte" de faire IPC avec UAC élévation. Qu'est-ce qu'il a accepté modèle pour faire IPC de communiquer avec processus élevé engendré pour les actions élevées temporaires?
Quoi?
Edit: disciples combinés de uac
et ipc
tags: 53
Je me demande - cela fait environ cinq ans que vous avez posé la question. Avez-vous déjà trouvé une solution satisfaisante? –