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
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:
-
Arrêter le service MSMQ
Ouvrez le dossier
C:\WINDOWS\system32\msmq\storage\lqs
-
Trouvez le fichier dans ce dossier qui décrit votre file d'attente -- (incommingQueue)
-
À 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)
Recherchez la ligne dans le fichier qui commence
Security=....
-
Copiez la ligne entière dans votre presse-papiers (attention à L'enveloppement de mots, cette ligne sera assez longue)
-
Ouvrez le fichier lqs pour votre file d'attente de problème dans votre éditeur de texte
Remplacer les
Security=...
ligne de ce fichier avec le contenu de votre presse-papiers-
Enregistrer le fichier LQS Modifié
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.
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):
- exécutez compmgmt.msc
- Ouvrez "Services et Applications"
- Ouvrez 'Files D'Attente De Messages'
- Ouvrez 'Files D'Attente Privées'
- Cliquez avec le bouton droit sur la file d'attente nouvellement créée
- Cliquez Sur 'Propriétés'
- Sélectionnez l'onglet 'Sécurité'
- Cliquez Sur 'Avancé'
- Sélectionnez L'onglet' Propriétaire '
- sélectionner 'Administrateur'
- Sélectionnez l'onglet "Autorisations"
- Cliquez Sur 'Ajouter'
- Saisissez le nom de votre compte (par exemple, 'Administrateur')
- Cliquez sur "Vérifier les noms"
- Cliquez sur " OK "
- Cliquez sur " OK "
- 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.