2009-04-23 14 views
25

तक पहुंचने की कोई अनुमति नहीं है एक एक्सपी मशीन पर एक निजी संदेश है जो एक .NET सेवा द्वारा बनाई गई थी। जब मैं एक वीबी 6 एप्लिकेशन में इस निजी कतार का उपयोग करना चाहता हूं, तो मुझे "पहुंच अस्वीकार कर दी गई" त्रुटि मिलती है। तो ऐसा लगता है कि यह एक सुरक्षा समस्या है, केवल मुझे समझ में नहीं आ रहा है कि जब भी मैं व्यवस्थापक के रूप में लॉग ऑन हूं, तब भी मैं को उसी मशीन पर बनाई गई कतार तक पहुंच नहीं प्राप्त कर सकता। क्या मुझे कुछ और ध्यान रखना है।किसी निजी एमएसएमक्यू

कैसे मैं 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 
+0

क्या आपने कतार के लिए सुरक्षा की जांच की है? एसीएल कतार गुणों में हैं और फ़ोल्डर गुणों की तरह दिखते हैं। –

+0

यदि मैं कतार की गुणों को संशोधित करने का प्रयास करता हूं, तो मुझे वही संदेश "पहुंच अस्वीकृत" प्राप्त होता है। – Mez

उत्तर

52

अगर नेट सेवा अनुमतियों निजी कतार से "सभी" समूह निकाल दिया यह तब हो सकता पर नमूना। (IncommingQueue -

  1. बंद करो MSMQ सेवा

  2. फ़ोल्डर खोलें C:\WINDOWS\system32\msmq\storage\lqs

  3. इस फ़ोल्डर कि अपने कतार का वर्णन में फ़ाइल का पता लगाएं: यहाँ कुछ कदम आप इस को हल करने के लिए ले जा सकते हैं)

  4. नोटपैड का उपयोग करके, कुछ अन्य निजी कतारों के लिए lqs फ़ाइल खोलें जिनके पास अच्छी सुरक्षा अनुमतियां हैं। (आप नहीं है, तो किसी भी अन्य निजी कतारों बनाएं)

  5. फ़ाइल कि Security=....

  6. कॉपी पूरी लाइन शुरू होता है अपने क्लिपबोर्ड में लाइन का पता लगाएँ (वर्ड लपेटें के लिए बाहर देखने के लिए, इस लाइन होगा काफी लंबा हो)

  7. ओपन अपने पाठ संपादक में आपकी समस्या को कतार के लिए lqs फ़ाइल

  8. अपने क्लिपबोर्ड की सामग्री के साथ इस फ़ाइल में ओवरराइट करें Security=... लाइन

  9. सहेजें संशोधित lqs फ़ाइल

  10. प्रारंभ MSMQ सेवा

आप समस्या कतार अब कतार जिसका सुरक्षा सेटिंग्स आप ऊपर चरण 6 में कॉपी किया रूप में एक ही अनुमतियां हैं खोजना चाहिए।

+1

यह एक भयानक हैक की तरह लगता है। * निश्चित रूप से * यह कतार के गुणों के माध्यम से किया जा सकता है, जैसा कि नीचे दिए गए उत्तर में वर्णित है। https://stackoverflow.com/a/3138438/1158692 –

26

यहां पोस्ट किया गया समाधान एक हैक लगता है। शायद यह विंडोज एक्सपी के लिए जरूरी है। मुझे विंडोज 7 का उपयोग करके कुछ ऐसा ही सामना करना पड़ा है और इसे हल करने के लिए एक अलग दृष्टिकोण का उपयोग किया है।

स्थिति:

  • कार्यक्रम है कि एक निजी लेन-देन संबंधी कतार
  • कार्यक्रम एक खिड़कियों सेवा के रूप में चलाया जाता है बनाता है, स्थानीय सिस्टम खाते पर चल रहे सी # कोड के होते हैं।
  • जब सेवा चलती है, तो निजी कतार स्थानीय सिस्टम खाते के मालिक के रूप में बनाई जाती है।
  • भले ही मैं व्यवस्थापक हूं, मैं कतार से संदेशों का निरीक्षण नहीं कर सकता।

    1. भागो compmgmt.msc
    2. ओपन 'सेवा और अनुप्रयोग'
    3. ओपन 'संदेश कतार'
    4. ओपन 'निजी कतार':

समाधान (इस विंडोज 7 के लिए है)

  • नव निर्मित कतार
  • राइट-क्लिक करें 'गुण'
  • पर क्लिक करें
  • 'सुरक्षा' पट्टी
  • 'उन्नत'
  • 'मालिक' टैब
  • करें 'व्यवस्थापक'
  • चुनें 'अनुमतियां' टैब
  • क्लिक करें 'जोड़ें'
  • प्रकार का चयन करें क्लिक करें का चयन करें आपके खाते के नाम पर (उदाहरण के लिए 'व्यवस्थापक')
  • क्लिक करें चैक नाम '
  • ' ठीक 'क्लिक
  • ' ठीक 'क्लिक
  • ' ठीक 'क्लिक
  • अब आप कतार में संदेशों का उपयोग कर सकते हैं और यह भी यदि आप चाहें तो कतार को शुद्ध करें।

    +0

    मैंने सत्यापित किया है कि यह विधि Windows Server 2003 पर काम करती है। महान कार्य। वह दूसरा फिक्स वास्तव में एक हैक जैसा प्रतीत होता है, और यह पूरा करने के लिए बहुत आसान है। – Jason

    +0

    मुझे चरण 15 और 16 के बीच "पूर्ण नियंत्रण" चेकबॉक्स पर क्लिक करना पड़ा, लेकिन इसके अलावा, हाँ यह मेरी विंडोज 7 मशीन पर काम करता था, और यह अन्य समाधान की तुलना में हैक से बहुत कम था। –

    +2

    यह काम नहीं करता है जब कतार की पहुंच के रूप में कतार की पहुंच Windows सेवा द्वारा बनाई गई है, जो मूल प्रश्न में वर्णित स्थिति है। – user379429

    संबंधित मुद्दे