2009-04-23 11 views
25

Na komputerze z systemem XP istnieje prywatny komunikat, który został utworzony przez usługę .net. Gdy chcę uzyskać dostęp do tej prywatnej kolejki w aplikacji VB6, ciągle pojawia się błąd "Odmowa dostępu". Wygląda na to, że jest to problem związany z bezpieczeństwem, ale nie rozumiem, dlaczego nawet kiedy jestem zalogowany jako administrator, nadal nie mogę uzyskać dostępu do kolejki utworzonej na tym samym komputerze. Czy jest jeszcze coś, co muszę wziąć pod uwagę.Brak zezwolenia na dostęp do prywatnej maszyny MSMQ

próbki, w jaki sposób mogę korzystać z kolejki w 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

Czy sprawdziłeś zabezpieczenia kolejki? Listy ACL znajdują się we właściwościach kolejki i wyglądają podobnie do właściwości folderów. –

+0

Jeśli spróbuję zmodyfikować właściwości kolejki, po prostu pojawia się komunikat "odmowa dostępu". – Mez

Odpowiedz

52

Może się to zdarzyć, jeśli usługi .NET usunięte grupy „Wszyscy” z uprawnieniami kolejki prywatne. Oto kilka kroków, które można podjąć, aby rozwiązać ten problem:

  1. Zatrzymaj usługę MSMQ

  2. Otwórz folder C:\WINDOWS\system32\msmq\storage\lqs

  3. Znajdź plik w tym folderze, który opisuje swoją kolejkę - (incommingQueue)

  4. Za pomocą notatnika otwórz plik lqs dla innej prywatnej kolejki, która ma dobre uprawnienia zabezpieczeń. (Jeśli nie masz żadnych innych kolejki prywatne utworzyć jeden)

  5. Zlokalizuj wiersz w pliku, który rozpoczyna Security=....

  6. Skopiuj całą linię do schowka (uważaj na zawijania, linia ta będzie być dość długi)

  7. Otwórz plik LQS dla swojego problemu kolejki w edytorze tekstowym

  8. Zastąp linię Security=... w tym pliku z zawartością schowka

  9. złożyć
  10. zapisać zmodyfikowany LQS

  11. Uruchom usługę MSMQ

Należy zauważyć, że kolejka problem ma teraz takie same uprawnienia jak kolejki, której ustawienia zabezpieczeń skopiowany w punkcie 6 powyżej.

+1

To brzmi jak potworny hack. * Z pewnością * można to zrobić za pośrednictwem właściwości kolejki, jak opisano w odpowiedzi poniżej. https://stackoverflow.com/a/3138438/1158692 –

26

Rozwiązanie zamieszczone tutaj wydaje się nieco hackerem. Być może jest to konieczne w przypadku systemu Windows XP. Napotkałem coś podobnego przy użyciu Windows 7 i zastosowałem inne podejście, aby to rozwiązać.

Sytuacja:

  • Program składa się z kodu C#, który tworzy prywatną kolejkę transakcyjną
  • program jest uruchamiany jako usługa systemu Windows, działa na lokalnym koncie systemowym.
  • Po uruchomieniu usługi kolejka prywatna jest tworzona z kontem Local System jako właścicielem.
  • Mimo że jestem administratorem, nie mogę sprawdzić wiadomości z kolejki.

Solution (to jest dla Windows 7):

  1. Run compmgmt.msc
  2. 'Usługi i aplikacje' otwarty 'Kolejki prywatne'
  3. otwarty 'kolejki wiadomości'
  4. otwarte
  5. Kliknij prawym przyciskiem myszy nowo utworzoną kolejkę
  6. Kliknąć "Właściwości"
  7. Wybierz zakładkę 'Bezpieczeństwo'
  8. kliknij 'Zaawansowane'
  9. Wybierz kartę 'właściciel'
  10. Wybierz 'Administrator' kartę
  11. wybierz 'Uprawnienia'
  12. kliknąć przycisk 'Dodaj'
  13. Type na twoje konto (np 'Administrator')
  14. kliknąć 'Sprawdź nazwy'
  15. Kliknij 'OK'
  16. Kliknij 'OK'
  17. Kliknij 'OK'

Teraz można uzyskać dostęp do wiadomości w kolejce, a także oczyść kolejkę, jeśli chcesz.

+0

Sprawdziłem, czy ta metoda działa w systemie Windows Server 2003. Świetna robota. Ta druga poprawka naprawdę wydawała się hackowaniem, a ta jest o wiele łatwiejsza do wykonania. – Jason

+0

Musiałem kliknąć pole wyboru "Pełna kontrola" pomiędzy krokami 15 i 16, ale poza tym, tak to działało na moim komputerze z systemem Windows 7, a to znacznie mniej hack niż inne rozwiązanie. –

+2

Nie działa, gdy kolejka jest tworzona przez usługę systemu Windows, ponieważ odmawia się dostępu do kolejki, co jest dokładnie sytuacją opisaną w pierwotnym pytaniu. – user379429

Powiązane problemy