MessageQueue::SetPermissions Method (MessageQueueAccessControlEntry^)
Assigns access rights to the queue based on the contents of an access control entry.
Assembly: System.Messaging (in System.Messaging.dll)
Parameters
- ace
-
Type:
System.Messaging::MessageQueueAccessControlEntry^
A MessageQueueAccessControlEntry that specifies a user, an access type, and a permission type.
| Exception | Condition |
|---|---|
| MessageQueueException | An error occurred when accessing a Message Queuing method. |
Use this overload to grant, deny, or revoke rights by using an access control entry to specify trustee and rights information.
The trustee you specify when you construct the ace parameter can be an individual user, a group of users, or a computer. If the trustee is an individual, use the format DOMAIN\user. You can specify "." for the trustee to indicate the local computer.
The permissions you assign through SetPermissions add rights to the existing list. By default, the creator of a public or private queue has full control, and the domain group Everyone has permission to get queue properties, get permissions, and write to the queue. When you call SetPermissions, the user and permissions information is appended to the bottom of the existing list.
The system examines each AccessControlEntry in sequence until one of the following events occurs:
An access-denied AccessControlEntry explicitly denies any of the requested access rights to one of the trustees listed in the thread's access token.
One or more access-allowed AccessControlEntry items for trustees listed in the thread's access token explicitly grant all the requested access rights.
All AccessControlEntry items have been checked and there is still at least one requested access right that has not been explicitly allowed, in which case, access is implicitly denied.
The rights to a queue, which you specify in the rights parameter when you construct your MessageQueueAccessControlEntry, can be any combination of the following:
Full Control
Delete Message
Receive Message
Peek Message
Receive Journal Message
Get Queue Properties
Set Queue Properties
Get Permissions
Set Permissions
Take Queue Ownership
Write Message
The rights parameter you specify in the constructor for the ace parameter is a flag of the MessageQueueAccessRights enumeration. It represents a set of bit flags that you can combine using the bitwise operator OR when you build the rights parameter.
The following table shows whether this method is available in various Workgroup modes.
Workgroup mode | Available |
|---|---|
Local computer | Yes |
Local computer and direct format name | Yes |
Remote computer | No |
Remote computer and direct format name | No |
The following code example demonstrates the use of SetPermissions(MessageQueueAccessControlEntry^).
// Connect to a queue on the local computer. MessageQueue^ queue = gcnew MessageQueue(".\\exampleQueue"); // Create a new trustee to represent the "Everyone" user group. Trustee^ tr = gcnew Trustee("Everyone"); // Create a MessageQueueAccessControlEntry, granting the trustee the // right to receive messages from the queue. MessageQueueAccessControlEntry^ entry = gcnew MessageQueueAccessControlEntry( tr, MessageQueueAccessRights::ReceiveMessage, AccessControlEntryType::Allow); // Apply the MessageQueueAccessControlEntry to the queue. queue->SetPermissions(entry); queue->Close();
Available since 1.1