Aucune autorisation pour accéder à un MSMQ privé

Sur une machine XP, il existe un messagequeue privé créé par un service. Net. Lorsque je veux accéder à cette file d'attente privée dans une application VB6, je reçois un "Accès refusé" s'affiche. Il semble donc que ce soit un problème de sécurité, mais je ne comprends pas pourquoi même lorsque je suis connecté en tant qu'administrateur, je continue impossible d'avoir accès à la file d'attente créée sur la même machine. Est-il autre chose que je dois prendre en compte.

Exemple sur la façon dont j'utilise la file d'attente dans VB6

Public msgQueue As MSMQQueue

Private Sub OpenQueue()

    Dim MQ As New MSMQQueueInfo
        MQ .PathName = ".Private$incommingQueue"

    Set msgQueue = MQ.Open(MQ_RECEIVE_ACCESS, MQ_DENY_NONE)

End Sub
25
demandé sur Mez 2009-04-23 14:33:18

2 réponses

Cela peut se produire si le Service. Net a supprimé le groupe" tout le monde " des autorisations de la file d'attente privée. Voici quelques étapes que vous pouvez prendre pour résoudre ce problème:

  1. Arrêter le service MSMQ

  2. Ouvrez le dossier C:\WINDOWS\system32\msmq\storage\lqs

  3. Trouvez le fichier dans ce dossier qui décrit votre file d'attente -- (incommingQueue)

  4. À l'aide du bloc-notes, ouvrez le fichier lqs pour une autre file d'attente privée disposant de bonnes autorisations de sécurité. (Si vous n'avez pas d'autres les files d'attente privées en créent une)

  5. Recherchez la ligne dans le fichier qui commence Security=....

  6. Copiez la ligne entière dans votre presse-papiers (attention à L'enveloppement de mots, cette ligne sera assez longue)

  7. Ouvrez le fichier lqs pour votre file d'attente de problème dans votre éditeur de texte

  8. Remplacer les Security=... ligne de ce fichier avec le contenu de votre presse-papiers

  9. Enregistrer le fichier LQS Modifié

  10. Démarrer le service MSMQ

Vous devriez constater que la file d'attente de problème a maintenant les mêmes autorisations que la file d'attente dont vous avez copié les paramètres de sécurité à l'étape 6 ci-dessus.

52
répondu Jose Basilio 2009-04-24 04:49:45

La solution affichée ici semble un peu un hack. Peut-être que cela est nécessaire pour Windows XP. J'ai rencontré quelque chose de similaire en utilisant Windows 7 et utilisé une approche différente pour résoudre ce problème.

Situation:

  • programme se compose de code C # qui crée une file d'attente transactionnelle privée
  • Programme est exécuté en tant que service windows, en cours d'exécution sur le compte système Local.
  • lorsque le service est exécuté, la file d'attente privée est créée avec le compte système Local propriétaire.
  • même si je suis administrateur, Je ne peux pas inspecter les messages de la file d'attente.

Solution (ceci est Pour Windows 7):

  1. exécutez compmgmt.msc
  2. Ouvrez "Services et Applications"
  3. Ouvrez 'Files D'Attente De Messages'
  4. Ouvrez 'Files D'Attente Privées'
  5. Cliquez avec le bouton droit sur la file d'attente nouvellement créée
  6. Cliquez Sur 'Propriétés'
  7. Sélectionnez l'onglet 'Sécurité'
  8. Cliquez Sur 'Avancé'
  9. Sélectionnez L'onglet' Propriétaire '
  10. sélectionner 'Administrateur'
  11. Sélectionnez l'onglet "Autorisations"
  12. Cliquez Sur 'Ajouter'
  13. Saisissez le nom de votre compte (par exemple, 'Administrateur')
  14. Cliquez sur "Vérifier les noms"
  15. Cliquez sur " OK "
  16. Cliquez sur " OK "
  17. Cliquez sur " OK "

Maintenant, vous pouvez accéder aux messages dans la file d'attente et également purger la file d'attente si vous le souhaitez.

26
répondu YuriW 2011-12-19 22:44:11