2012-10-17 6 views
1

J'essaie d'obtenir la liste des files d'attente disponibles sur la machine distante. La machine est un Win2003R2 en mode Groupe de travail, et la machine cliente qui exécute le code est une machine Windows 8 utilisant le même nom de groupe de travail. Je reçois une exception lors de l'exécution du code suivant:Accès refusé sur MessageQueue.GetPrivateQueuesByMachine

var messages = MessageQueue.GetPrivateQueuesByMachine("Win2003SRV"); 

Et le message d'erreur est:

base {System.Runtime.InteropServices.ExternalException}: {"Access to Message Queuing system is denied."} 
Message: "Access to Message Queuing system is denied." 
MessageQueueErrorCode: AccessDenied 

Je suis sûr qu'il a quelque chose à voir avec les autorisations sur Windows 2003, mais n'a pas pu trouver beaucoup. Le code fonctionne correctement avec un autre Win Server 2008 (mais en mode groupe de travail) et fonctionne également avec MSMQ local. Selon le MSDN page, cette fonction est prise en charge en mode groupe de travail, alors quel est le piège?

SOLVED:

Mon problème est avéré être que je n'ai pas MSMQ installé sur ma machine client! L'aide sur le lien m'a orienté dans la bonne direction, donc tout ce que je devais faire était d'installer MSMQ sur la machine client. Si vous regardez l'implémentation de GetPrivateQueuesByMachine, l'appel natif peut lancer une exception DllNotFoundException et c'est cette exception qui se traduit par ce message spécifique, donc cela devrait vous donner un indice sur ce qui est faux

+0

Êtes-vous un administrateur local sur la machine 2003R2? –

+0

oui, j'ai essayé administrateur local et domaine –

Répondre

3

John Breakwell qui est/était un msmq MVP a quelques messages qui peuvent aider. Le problème semble provoqué parce que la méthode GetPrivateQueuesByMachine() utilise RPC sous le capot pour communiquer entre les gestionnaires de files d'attente sur différentes machines.

http://blogs.msdn.com/b/johnbreakwell/archive/2010/03/24/understanding-how-msmq-security-blocks-rpc-traffic.aspx

+0

@ Hadi Pourriez-vous expliquer exactement comment cet article vous a aidé à aider, s'il vous plaît? Je suis coincé avec un problème similaire. À votre santé. –

+2

@NeilBarnwell Mon problème s'est avéré être que MSMQ n'était pas installé sur ma machine cliente! L'aide sur le lien m'a orienté dans la bonne direction, donc tout ce que je devais faire était d'installer MSMQ sur la machine client. Si vous regardez l'implémentation de GetPrivateQueuesByMachine, l'appel natif peut lancer une exception DllNotFoundException et c'est cette exception qui se traduit par ce message spécifique, il devrait donc vous donner un indice sur ce qui ne va pas. –