2009-09-14 7 views
0

서비스 사용자가 만든 개인 메시지 큐를 삭제할 수 있습니까? 제거하는 동안 애플리케이션에서 작성한 메시지 대기열을 정리하고 싶습니다. 보안을 위해 이러한 대기열에 대한 액세스가 현재 사용자 (ServiceUser)로 제한되었습니다. 제거하는 동안 관리자 권한이 있지만 큐를 삭제하거나 큐에서 privs를 수정하려고하면 MessageQueueException 액세스가 거부됩니다.제거 중에 MSMQ 큐 삭제

public void DeleteAppQueues() 
    { 
     List<string> trash = new List<string>(); 

     var machineQueues = MessageQueue.GetPrivateQueuesByMachine("."); 
     foreach (var q in machineQueues) 
     { 
      if (IsAppQueue(q.QueueName)) 
      { 
       trash.Add(".\\" + q.QueueName); 
      } 
      q.Dispose(); 
     } 

     foreach (var queueName in trash) 
     { 
      try 
      { 
       using (MessageQueue delQueue = new MessageQueue(queueName)) 
       { 
        delQueue.SetPermissions("Everyone", MessageQueueAccessRights.FullControl, AccessControlEntryType.Allow); 
       } 
       MessageQueue.Delete(queueName); 
      } 
      catch (MessageQueueException ex) 
      { 
       // ex.Message is "Access to Message Queuing system is denied." 
      }     
     } 
    } 

답변

0

인 관리자가 충분하지 않다 : 여기

는 정리 코드입니다. "삭제"권한이 있어야합니다. 그리고 그 전에 권한을 설정하려면 "권한 설정"권한 (또는 대기열 소유자)이 있어야합니다.

"SetPermissions"호출 또는 "Delete"호출에서 예외가 발생합니까?

+0

삭제 호출과 SetPermissions 호출은 모두 throw됩니다. –

관련 문제