MessageQueuePermission Class

Allows control of code access permissions for messaging.

System.Object
  System.Security.CodeAccessPermission
    System.Messaging.MessageQueuePermission

Namespace:  System.Messaging
Assembly:  System.Messaging (in System.Messaging.dll)

[SerializableAttribute]
public sealed class MessageQueuePermission : CodeAccessPermission, 
	IUnrestrictedPermission

The MessageQueuePermission type exposes the following members.

  NameDescription
Public methodMessageQueuePermission()Initializes a new instance of the MessageQueuePermission class.
Public methodMessageQueuePermission(MessageQueuePermissionEntry[])Initializes a new instance of the MessageQueuePermission class with the specified permission access level entries.
Public methodMessageQueuePermission(PermissionState)Initializes a new instance of the MessageQueuePermission class with the specified permission state.
Public methodMessageQueuePermission(MessageQueuePermissionAccess, String)Initializes a new instance of the MessageQueuePermission class with the specified access levels and the path of the queue.
Public methodMessageQueuePermission(MessageQueuePermissionAccess, String, String, String)Initializes a new instance of the MessageQueuePermission class with the specified access levels, computer to use, queue description, and queue category.
Top

  NameDescription
Public propertyPermissionEntriesGets the collection of permission entries for this permissions request.
Top

  NameDescription
Public methodAssertDeclares that the calling code can access the resource protected by a permission demand through the code that calls this method, even if callers higher in the stack have not been granted permission to access the resource. Using Assert can create security issues. (Inherited from CodeAccessPermission.)
Public methodCopyCreates and returns an identical copy of the current permission object. (Overrides CodeAccessPermission.Copy().)
Public methodDemandForces a SecurityException at run time if all callers higher in the call stack have not been granted the permission specified by the current instance. (Inherited from CodeAccessPermission.)
Public methodDeny Obsolete. Prevents callers higher in the call stack from using the code that calls this method to access the resource specified by the current instance. (Inherited from CodeAccessPermission.)
Public methodEqualsDetermines whether the specified CodeAccessPermission object is equal to the current CodeAccessPermission. (Inherited from CodeAccessPermission.)
Public methodFromXmlReconstructs a security object with a specified state from an XML encoding. (Overrides CodeAccessPermission.FromXml(SecurityElement).)
Public methodGetHashCodeGets a hash code for the CodeAccessPermission object that is suitable for use in hashing algorithms and data structures such as a hash table. (Inherited from CodeAccessPermission.)
Public methodGetTypeGets the Type of the current instance. (Inherited from Object.)
Public methodIntersectReturns a new permission object that represents the intersection of the current permission object and the specified permission object. (Overrides CodeAccessPermission.Intersect(IPermission).)
Public methodIsSubsetOfReturns a value that indicates whether the current permission object is a subset of the specified permission object. (Overrides CodeAccessPermission.IsSubsetOf(IPermission).)
Public methodIsUnrestrictedReturns a value that indicates whether the permission can be represented as unrestricted without any knowledge of the permission semantics.
Public methodPermitOnlyPrevents callers higher in the call stack from using the code that calls this method to access all resources except for the resource specified by the current instance. (Inherited from CodeAccessPermission.)
Public methodToStringCreates and returns a string representation of the current permission object. (Inherited from CodeAccessPermission.)
Public methodToXmlCreates an XML encoding of the security object and its current state. (Overrides CodeAccessPermission.ToXml().)
Public methodUnionReturns a new permission object that is the union of the current and specified permission objects. (Overrides CodeAccessPermission.Union(IPermission).)
Top

The following code example creates several instances of MessageQueuePermission and demonstrates the use of the PermissionEntries property.


using System;
using System.Messaging;

public class MessageQueuePermissionExample
{
    public static void Main()
    {
        // Create a new instance of the class.
        MessageQueuePermissionExample example =
            new MessageQueuePermissionExample();

        // Create a message queue on the local computer.
        CreateQueue(".\\exampleQueue", false);

        // Demonstrate MessageQueuePermission's constructors.
        example.CreatePermission1();
        example.CreatePermission2();
        example.CreatePermission3();
        example.CreatePermission4();
        example.CreatePermission5();

        // Get and set MessageQueuePermission's PermissionEntries property.
        example.GetPermissionEntries();
    }

    // Creates a new queue. 
    public static void CreateQueue(string queuePath, bool transactional)
    {
        if(!MessageQueue.Exists(queuePath))
        {
            MessageQueue.Create(queuePath, transactional);
        }
        else
        {
            Console.WriteLine(queuePath + " already exists.");
        }
    }

    // Demonstrates the following MessageQueuePermission constructor: 
    // public #ctor () 
    public void CreatePermission1()
    {
        // Create a new instance of MessageQueuePermission.
        MessageQueuePermission permission = new MessageQueuePermission();
    }

    // Demonstrates the following MessageQueuePermission constructor: 
    // public #ctor (MessageQueuePermissionAccess permissionAccess, 
    //  String path) 
    public void CreatePermission2()
    {
        // Create a new instance of MessageQueuePermission.
        MessageQueuePermission permission = new MessageQueuePermission(
            MessageQueuePermissionAccess.Receive,
            ".\\exampleQueue");
    }

    // Demonstrates the following MessageQueuePermission constructor: 
    // public #ctor (MessageQueuePermissionAccess permissionAccess, 
    //  String machineName, String label, String category) 
    public void CreatePermission3()
    {
        // Connect to a queue on the local computer.
        MessageQueue queue = new MessageQueue(".\\exampleQueue");

        // Create a new instance of MessageQueuePermission. 
	string queueCategory = queue.Category.ToString();
	string machineName = queue.MachineName;
	string label = queue.Label;
        MessageQueuePermission permission = new MessageQueuePermission(
            MessageQueuePermissionAccess.Receive,
            machineName,
            label,
            queueCategory);
    }

    // Demonstrates the following MessageQueuePermission constructor: 
    //public #ctor (MessageQueuePermissionEntry[] permissionAccessEntries) 
    public void CreatePermission4()
    {
        // Connect to a queue on the local computer.
        MessageQueue queue = new MessageQueue(".\\exampleQueue");

        // Create an array of type MessageQueuePermissionEntry.
        MessageQueuePermissionEntry[] entries =
            new MessageQueuePermissionEntry[1];

        // Create a new instance of MessageQueuePermissionEntry and place the 
        // instance in the array. 
	string machineName = queue.MachineName;
	string label = queue.Label;
        entries[0] = new MessageQueuePermissionEntry(
            MessageQueuePermissionAccess.Receive,
            machineName,
            label,
            queue.Category.ToString());

        // Create a new instance of MessageQueuePermission.
        MessageQueuePermission permission = new MessageQueuePermission(
            entries);
    }

    // Demonstrates the following MessageQueuePermission constructor: 
    //public #ctor (PermissionState state) 
    public void CreatePermission5()
    {
        // Create a new instance of MessageQueuePermission.
        MessageQueuePermission permission = new MessageQueuePermission(
            System.Security.Permissions.PermissionState.Unrestricted);
    }

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

        // Create an array of type MessageQueuePermissionEntry.
        MessageQueuePermissionEntry[] entries =
            new MessageQueuePermissionEntry[1];

        // Create a new instance of MessageQueuePermissionEntry and place the 
        // instance in the array. 
	string machineName = queue.MachineName;
	string label = queue.Label;
        entries[0] = new MessageQueuePermissionEntry(
            MessageQueuePermissionAccess.Receive,
            machineName,
            label,
            queue.Category.ToString());

        // Create a new instance of MessageQueuePermission.
        MessageQueuePermission permission = new MessageQueuePermission(
            entries);

        // Create a new instance of MessageQueuePermissionEntryCollection and 
        // use it to retrieve the permission's PermissionEntries property 
        // value.
        MessageQueuePermissionEntryCollection collection =
            permission.PermissionEntries;

        // Loop through the collection. 
        foreach(MessageQueuePermissionEntry entry in collection)
        {
            // Display the property values of each MessageQueuePermissionEntry.
            Console.WriteLine("PermissionAccess: {0}", entry.PermissionAccess);
            Console.WriteLine("MachineName: {0}", entry.MachineName);
            Console.WriteLine("Label: {0}", entry.Label);
            Console.WriteLine("Category: {0}", entry.Category.ToString());
        }
    }
}

.NET Framework

Supported in: 4.5.2, 4.5.1, 4.5, 4, 3.5, 3.0, 2.0, 1.1, 1.0

.NET Framework Client Profile

Supported in: 4, 3.5 SP1

Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (Server Core Role not supported), Windows Server 2008 R2 (Server Core Role supported with SP1 or later; Itanium not supported)

The .NET Framework does not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.

Any public static (Shared in Visual Basic) members of this type are thread safe. Any instance members are not guaranteed to be thread safe.
Was this page helpful?
(1500 characters remaining)
Thank you for your feedback
Show:
© 2014 Microsoft