Je suis confronté à un problème DCOM plutôt étrange et très spécifique et j'espère que quelqu'un l'aura rencontré et résolu.Interopérabilité DCOM entre Windows XP et Windows 7
J'essaie d'instancier un objet COM dans un serveur EXE sur une machine Windows 7 (appelons-le W7). Le client réside sur une machine Windows XP (appelez-le WXP). Sur WXP, l'utilisateur connecté est un utilisateur de domaine. Sur W7, l'utilisateur est un utilisateur local. J'ai (afaik) correctement défini tous les droits DCOM, l'authentification et les privilèges de compte. Il n'y a pas de pare-feu impliqué. Tout ce que j'obtiens est que le processus du serveur COM EXE est démarré sur W7, avec le nom d'utilisateur que je m'attends, mais ne semble même pas atteindre sa fonction WinMain et reste suspendu et ne meurt jamais à moins que je le tue. Je peux attacher un débogueur distant (Visual Studio 2010) qui m'avertira que le processus pourrait être bloqué, et quand je le casse, il s'arrête dans une boucle de file de messages (GetMessage/Dispatch).
Le client obtient un pointeur (apparemment valide) mais toute tentative d'utilisation entraîne l'apparition de E_ACCESSDENIED.
Si quelque chose du scénario ci-dessus est modifié, l'instanciation de l'objet COM réussit et l'objet se comporte correctement.
Je sais que la chance est faible pour trouver une réponse, mais tout conseil est le bienvenu.
Merci.
Merci pour la réponse. Je vais essayer bientôt et afficher les résultats. La chose confuse est que la situation inverse - dans lequel le client est sur W7 (pas dans le domaine) et le serveur est sur WXP (dans le domaine) - fonctionne! Il fonctionne avec les informations d'identification WXP locales (hors domaine) mais également avec les informations d'identification de domaine. – racanu
J'ai jeté un coup d'œil à l'article et je remarque que le client ne prend pas les informations d'identification (c'est-à-dire le nom d'utilisateur/mot de passe). Cela me fait penser qu'il ne fournit aucun AuthInfo dans CoInitializeSecurity, ce qui signifie qu'il se connecte anonymement au serveur. Je n'ai pas configuré mon serveur pour une telle situation. Je vais le faire, pour l'expérience, mais je ne pense pas que ce soit une solution acceptable pour le code de production. – racanu
J'ai trouvé cet article que j'avais initialement manqué, qui m'a donné quelques idées que je pourrais essayer: http: // stackoverflow.com/questions/6123301/how-does-usurpation-dans-dcom-travail – racanu