Comment exécuter un service COM en tant que système et autoriser un client de n'importe quel contexte de sécurité à s'y connecter?Exécution d'un service COM en tant que système
J'ai un .exe qui héberge mon objet de classe en appelant CoRegisterClassObject
. Lorsque je lance le fichier .exe en tant qu'administrateur, le même compte Administrateur peut très bien interagir avec ce dernier. Lorsque j'exécute le fichier .exe en tant que système, le compte administrateur échoue lors de l'appel CoCreateInstance
avec l'erreur 0x80040154
.
MISE À JOUR:
J'ai fait quelques progrès. Dans le service COM, j'inscris ma fabrique de classe dans la table des objets en cours d'exécution avec le drapeau ROTFLAGS_ALLOWANYCLIENT
. Dans le client, j'utilise la méthode GetObject
de la table des objets en cours d'exécution pour obtenir un pointeur vers la fabrique de classes. Cela me permet d'accéder au service lorsqu'il s'exécute en tant qu'administrateur à partir d'un compte non administrateur. Toutefois, lorsqu'il s'exécute en tant que système, l'appel CoCreateInstance
d'un client non-système échoue avec 0x80070005
. Je soupçonne que ce problème est lié à celui décrit here.