MessageQueue.SetPermissions 方法

定义

将权限添加到当前集合中。 这样可控制谁对队列中的队列属性和消息具有访问权限。

重载

SetPermissions(AccessControlList)

基于访问控制列表的内容将访问权限分配给队列。

SetPermissions(MessageQueueAccessControlEntry)

基于访问控制项的内容将访问权限分配给队列。

SetPermissions(String, MessageQueueAccessRights)

给予计算机、组或用户指定的访问权限。

SetPermissions(String, MessageQueueAccessRights, AccessControlEntryType)

利用指定的访问控制类型(允许、拒绝、撤消或设置),给予计算机、组或用户指定的访问权限。

SetPermissions(AccessControlList)

基于访问控制列表的内容将访问权限分配给队列。

public:
 void SetPermissions(System::Messaging::AccessControlList ^ dacl);
public void SetPermissions (System.Messaging.AccessControlList dacl);
member this.SetPermissions : System.Messaging.AccessControlList -> unit
Public Sub SetPermissions (dacl As AccessControlList)

参数

dacl
AccessControlList

AccessControlList,包含一个或多个指定受信者和要授予的权限的访问控制项。

例外

访问“消息队列”方法时出错。

示例

以下代码示例演示了 SetPermissions(AccessControlList) 的用法。


// Connect to a queue on the local computer.
MessageQueue^ queue = gcnew MessageQueue(".\\exampleQueue");

// Create an AccessControlList.
AccessControlList^ list = gcnew AccessControlList();

// Create a new trustee to represent the "Everyone" user group.
Trustee^ tr = gcnew Trustee("Everyone");

// Create an AccessControlEntry, granting the trustee read access to
// the queue.
AccessControlEntry^ entry = gcnew AccessControlEntry(
    tr, GenericAccessRights::Read,
    StandardAccessRights::Read,
    AccessControlEntryType::Allow);

// Add the AccessControlEntry to the AccessControlList.
list->Add(entry);

// Apply the AccessControlList to the queue.
queue->SetPermissions(list);

queue->Close();

// Connect to a queue on the local computer.
MessageQueue queue = new MessageQueue(".\\exampleQueue");

// Create an AccessControlList.
AccessControlList list = new AccessControlList();

// Create a new trustee to represent the "Everyone" user group.
Trustee tr = new Trustee("Everyone");

// Create an AccessControlEntry, granting the trustee read access to
// the queue.
AccessControlEntry entry = new AccessControlEntry(
    tr, GenericAccessRights.Read,
    StandardAccessRights.Read,
    AccessControlEntryType.Allow);

// Add the AccessControlEntry to the AccessControlList.
list.Add(entry);

// Apply the AccessControlList to the queue.
queue.SetPermissions(list);

注解

使用此重载可以通过使用访问控制条目集合来指定受托人和权限信息来授予、拒绝或撤消权限。 例如,这用于同时向多个用户授予权限。

构造 ace 参数时指定的受托人可以是单个用户、一组用户或计算机。 如果受托人是个人,请使用 格式 DOMAIN\user。 可以为受托人指定“.”以指示本地计算机。

通过 SetPermissions 向现有列表添加权限分配的权限。 默认情况下,公共或专用队列的创建者拥有完全控制权,域组“每个人”有权获取队列属性、获取权限和写入队列。 调用 SetPermissions时,用户和权限信息将追加到现有列表的底部。

系统按顺序检查每个 AccessControlEntry 事件,直到发生以下事件之一:

  • 拒绝访问 AccessControlEntry 显式拒绝对线程访问令牌中列出的任一受托人请求的访问权限。

  • 线程的访问令牌中列出的受托人的一个或多个允许 AccessControlEntry 访问项显式授予所有请求的访问权限。

  • 已检查所有 AccessControlEntry 项,但仍至少有一个请求的访问权限未被明确允许,在这种情况下,将隐式拒绝访问。

构造 dacl 参数时,将实例添加到AccessControlEntryAccessControlList集合。 构造每个访问控制项时,可以指定泛型或标准访问权限。 队列权限可以是以下任意组合:

  • 删除

  • 读取安全

  • 写入安全性

  • 同步

  • 修改所有者

  • 读取

  • 写入

  • 执行

  • 必需

  • 全部

  • None

这些权限是可以使用 OR 位运算符组合的一组位标志。

  • 完全控制

  • 删除消息

  • 接收消息

  • 速览消息

  • 接收日记消息

  • 获取队列属性

  • 设置队列属性

  • 获取权限

  • 设置权限

  • 获取队列所有权

  • 编写消息

下表显示了此方法是否在各种工作组模式下可用。

工作组模式 可用
本地计算机
本地计算机和直接格式名称
远程计算机
远程计算机和直接格式名称

另请参阅

适用于

SetPermissions(MessageQueueAccessControlEntry)

基于访问控制项的内容将访问权限分配给队列。

public:
 void SetPermissions(System::Messaging::MessageQueueAccessControlEntry ^ ace);
public void SetPermissions (System.Messaging.MessageQueueAccessControlEntry ace);
member this.SetPermissions : System.Messaging.MessageQueueAccessControlEntry -> unit
Public Sub SetPermissions (ace As MessageQueueAccessControlEntry)

参数

ace
MessageQueueAccessControlEntry

指定用户、访问类型和权限类型的 MessageQueueAccessControlEntry

例外

访问“消息队列”方法时出错。

示例

以下代码示例演示了 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();

// Connect to a queue on the local computer.
MessageQueue queue = new MessageQueue(".\\exampleQueue");

// Create a new trustee to represent the "Everyone" user group.
Trustee tr = new Trustee("Everyone");

// Create a MessageQueueAccessControlEntry, granting the trustee the
// right to receive messages from the queue.
MessageQueueAccessControlEntry entry = new
    MessageQueueAccessControlEntry(
    tr, MessageQueueAccessRights.ReceiveMessage,
    AccessControlEntryType.Allow);

// Apply the MessageQueueAccessControlEntry to the queue.
queue.SetPermissions(entry);

注解

使用此重载通过访问控制项指定受托人和权限信息来授予、拒绝或撤消权限。

构造 ace 参数时指定的受托人可以是单个用户、一组用户或计算机。 如果受托人是个人,请使用 格式 DOMAIN\user。 可以为受托人指定“.”以指示本地计算机。

通过 SetPermissions 向现有列表添加权限分配的权限。 默认情况下,公共或专用队列的创建者拥有完全控制权,域组“每个人”有权获取队列属性、获取权限和写入队列。 调用 SetPermissions时,用户和权限信息将追加到现有列表的底部。

系统按顺序检查每个 AccessControlEntry 事件,直到发生以下事件之一:

  • 拒绝访问 AccessControlEntry 显式拒绝对线程访问令牌中列出的任一受托人请求的访问权限。

  • 线程的访问令牌中列出的受托人的一个或多个允许 AccessControlEntry 访问项显式授予所有请求的访问权限。

  • 已检查所有 AccessControlEntry 项,但仍至少有一个请求的访问权限未被明确允许,在这种情况下,将隐式拒绝访问。

在构造 时MessageQueueAccessControlEntry在 参数中指定的rights队列权限可以是以下任意组合:

  • 完全控制

  • 删除消息

  • 接收消息

  • 速览消息

  • 接收日记消息

  • 获取队列属性

  • 设置队列属性

  • 获取权限

  • 设置权限

  • 获取队列所有权

  • 编写消息

rights 参数的构造函数 ace 中指定的参数是 枚举的 MessageQueueAccessRights 标志。 它表示一组位标志,可以在生成 rights 参数时使用按位运算符 OR 进行组合。

下表显示了此方法是否在各种工作组模式下可用。

工作组模式 可用
本地计算机
本地计算机和直接格式名称
远程计算机
远程计算机和直接格式名称

另请参阅

适用于

SetPermissions(String, MessageQueueAccessRights)

给予计算机、组或用户指定的访问权限。

public:
 void SetPermissions(System::String ^ user, System::Messaging::MessageQueueAccessRights rights);
public void SetPermissions (string user, System.Messaging.MessageQueueAccessRights rights);
member this.SetPermissions : string * System.Messaging.MessageQueueAccessRights -> unit
Public Sub SetPermissions (user As String, rights As MessageQueueAccessRights)

参数

user
String

获取对队列的附加权限的个人、组或计算机。

rights
MessageQueueAccessRights

MessageQueueAccessRights,指示对“消息队列”分配给传入的 user 的队列权限集。

例外

usernull

访问“消息队列”方法时出错。

示例

以下代码示例演示了 SetPermissions(String, MessageQueueAccessRights) 的用法。


// Connect to a queue on the local computer.
MessageQueue^ queue = gcnew MessageQueue(".\\exampleQueue");

// Grant all users in the "Everyone" user group the right to receive
// messages from the queue.
queue->SetPermissions("Everyone",
    MessageQueueAccessRights::ReceiveMessage);

queue->Close();

// Connect to a queue on the local computer.
MessageQueue queue = new MessageQueue(".\\exampleQueue");

// Grant all users in the "Everyone" user group the right to receive
// messages from the queue.
queue.SetPermissions("Everyone", MessageQueueAccessRights.ReceiveMessage);

注解

使用此重载可向单个用户授予指定权限。 用户可以是任何有效的受托人,其中包括单个用户、用户组或计算机。 如果用户是个人,请使用 参数的格式DOMAINuser\user。 可以为 参数指定“.” user 以指示本地计算机。

通过 SetPermissions 向现有列表添加权限分配的权限。 默认情况下,公共或专用队列的创建者拥有完全控制权,域组“每个人”有权获取队列属性、获取权限和写入队列。 调用 SetPermissions时,用户和权限信息将追加到现有列表的底部。

系统按顺序检查每个 AccessControlEntry 事件,直到发生以下事件之一:

  • 拒绝访问 AccessControlEntry 显式拒绝对线程访问令牌中列出的任一受托人请求的访问权限。

  • 线程的访问令牌中列出的受托人的一个或多个允许 AccessControlEntry 访问项显式授予所有请求的访问权限。

  • 已检查所有 AccessControlEntry 项,但仍至少有一个请求的访问权限未被明确允许,在这种情况下,将隐式拒绝访问。

参数中指定的 rights 队列权限可以是以下任意组合:

  • 完全控制

  • 删除消息

  • 接收消息

  • 速览消息

  • 接收日记消息

  • 获取队列属性

  • 设置队列属性

  • 获取权限

  • 设置权限

  • 获取队列所有权

  • 编写消息

MessageQueueAccessRights枚举表示一组位标志,你可以使用按位运算符 OR 组合这些标志来生成 rights 参数。

使用此重载,只能授予权限;不能撤销或拒绝它们。 必须使用其他重载来显式授予 除 之外Allow的任何AccessControlEntryType内容。

下表显示了此方法是否在各种工作组模式下可用。

工作组模式 可用
本地计算机
本地计算机和直接格式名称
远程计算机
远程计算机和直接格式名称

另请参阅

适用于

SetPermissions(String, MessageQueueAccessRights, AccessControlEntryType)

利用指定的访问控制类型(允许、拒绝、撤消或设置),给予计算机、组或用户指定的访问权限。

public:
 void SetPermissions(System::String ^ user, System::Messaging::MessageQueueAccessRights rights, System::Messaging::AccessControlEntryType entryType);
public void SetPermissions (string user, System.Messaging.MessageQueueAccessRights rights, System.Messaging.AccessControlEntryType entryType);
member this.SetPermissions : string * System.Messaging.MessageQueueAccessRights * System.Messaging.AccessControlEntryType -> unit
Public Sub SetPermissions (user As String, rights As MessageQueueAccessRights, entryType As AccessControlEntryType)

参数

user
String

获取对队列的附加权限的个人、组或计算机。

rights
MessageQueueAccessRights

MessageQueueAccessRights,指示对“消息队列”分配给传入的 user 的队列权限集。

entryType
AccessControlEntryType

AccessControlEntryType,指定授予、拒绝还是撤消 rights 参数指定的权限。

例外

访问“消息队列”方法时出错。

示例

以下代码示例演示了 SetPermissions(String, MessageQueueAccessRights, AccessControlEntryType) 的用法。


// Connect to a queue on the local computer.
MessageQueue^ queue = gcnew MessageQueue(".\\exampleQueue");

// Grant all users in the "Everyone" user group the right to receive
// messages from the queue.
queue->SetPermissions("Everyone",
    MessageQueueAccessRights::ReceiveMessage,
    AccessControlEntryType::Allow);

queue->Close();

// Connect to a queue on the local computer.
MessageQueue queue = new MessageQueue(".\\exampleQueue");

// Grant all users in the "Everyone" user group the right to receive
// messages from the queue.
queue.SetPermissions("Everyone", MessageQueueAccessRights.ReceiveMessage,
    AccessControlEntryType.Allow);

注解

使用此重载可授予、拒绝或撤销单个用户的指定权限。 用户可以是任何有效的受托人,其中包括单个用户、用户组或计算机。 如果用户是个人,请使用 参数的格式DOMAINuser\user。 可以为 参数指定“.” user 以指示本地计算机。

通过 SetPermissions 向现有列表添加权限分配的权限。 默认情况下,公共或专用队列的创建者拥有完全控制权,域组“每个人”有权获取队列属性、获取权限和写入队列。 调用 SetPermissions时,用户和权限信息将追加到现有列表的底部。

系统按顺序检查每个 AccessControlEntry 事件,直到发生以下事件之一:

  • 拒绝访问 AccessControlEntry 显式拒绝对线程访问令牌中列出的任一受托人请求的访问权限。

  • 线程的访问令牌中列出的受托人的一个或多个允许 AccessControlEntry 访问项显式授予所有请求的访问权限。

  • 已检查所有 AccessControlEntry 项,但仍至少有一个请求的访问权限未被明确允许,在这种情况下,将隐式拒绝访问。

参数中指定的 rights 队列权限可以是以下任意组合:

  • 完全控制

  • 删除消息

  • 接收消息

  • 速览消息

  • 接收日记消息

  • 获取队列属性

  • 设置队列属性

  • 获取权限

  • 设置权限

  • 获取队列所有权

  • 编写消息

MessageQueueAccessRights枚举表示一组位标志,你可以使用按位运算符 OR 组合这些标志来生成 rights 参数。

下表显示了此方法是否在各种工作组模式下可用。

工作组模式 可用
本地计算机
本地计算机和直接格式名称
远程计算机
远程计算机和直接格式名称

另请参阅

适用于