MutexRights Enumeration
TOC
Collapse the table of content
Expand the table of content

MutexRights Enumeration

 

Specifies the access control rights that can be applied to named system mutex objects.

This enumeration has a FlagsAttribute attribute that allows a bitwise combination of its member values.

Namespace:   System.Security.AccessControl
Assembly:  mscorlib (in mscorlib.dll)

[FlagsAttribute]
public enum MutexRights

Member nameDescription
ChangePermissions

The right to change the security and audit rules associated with a named mutex.

Delete

The right to delete a named mutex.

FullControl

The right to exert full control over a named mutex, and to modify its access rules and audit rules.

Modify

The right to release a named mutex.

ReadPermissions

The right to open and copy the access rules and audit rules for a named mutex.

Synchronize

The right to wait on a named mutex.

TakeOwnership

The right to change the owner of a named mutex.

Use the MutexRights enumeration to specify access control rights when you create MutexSecurity objects. To apply access rights to a named system mutex, use MutexSecurity objects with the Mutex(Boolean, String, Boolean, MutexSecurity) constructor and the Mutex.SetAccessControl method.

System_CAPS_noteNote

Security on synchronization objects is not supported for Windows 98 or Windows Millennium Edition.

The following code example demonstrates the use of MutexRights values when creating and using MutexAccessRule objects. The example creates an MutexSecurity object, adds rules that allow and deny various rights for the current user, and displays the resulting pair of rules. The example then allows new rights for the current user and displays the result, showing that the new rights are merged with the existing AccessControlType.Allowrule.

System_CAPS_noteNote

This example does not attach the security object to a Mutex object; see MutexSecurity, Mutex.GetAccessControl method, and Mutex.SetAccessControl.

using System;
using System.Threading;
using System.Security.AccessControl;
using System.Security.Principal;

public class Example
{
    public static void Main()
    {
        // Create a string representing the current user.
        string user = Environment.UserDomainName + "\\" + 
            Environment.UserName;

        // Create a security object that grants no access.
        MutexSecurity mSec = new MutexSecurity();

        // Add a rule that grants the current user the 
        // right to enter or release the mutex.
        MutexAccessRule rule = new MutexAccessRule(user, 
            MutexRights.Synchronize | MutexRights.Modify, 
            AccessControlType.Allow);
        mSec.AddAccessRule(rule);

        // Add a rule that denies the current user the 
        // right to change permissions on the mutex.
        rule = new MutexAccessRule(user, 
            MutexRights.ChangePermissions, 
            AccessControlType.Deny);
        mSec.AddAccessRule(rule);

        // Display the rules in the security object.
        ShowSecurity(mSec);

        // Add a rule that allows the current user the 
        // right to read permissions on the mutex. This rule
        // is merged with the existing Allow rule.
        rule = new MutexAccessRule(user, 
            MutexRights.ReadPermissions, 
            AccessControlType.Allow);
        mSec.AddAccessRule(rule);

        ShowSecurity(mSec);
    }

    private static void ShowSecurity(MutexSecurity security)
    {
        Console.WriteLine("\r\nCurrent access rules:\r\n");

        foreach(MutexAccessRule ar in 
            security.GetAccessRules(true, true, typeof(NTAccount)))
        {
            Console.WriteLine("        User: {0}", ar.IdentityReference);
            Console.WriteLine("        Type: {0}", ar.AccessControlType);
            Console.WriteLine("      Rights: {0}", ar.MutexRights);
            Console.WriteLine();
        }
    }
}

/*This code example produces output similar to following:

Current access rules:

        User: TestDomain\TestUser
        Type: Deny
      Rights: ChangePermissions

        User: TestDomain\TestUser
        Type: Allow
      Rights: Modify, Synchronize


Current access rules:

        User: TestDomain\TestUser
        Type: Deny
      Rights: ChangePermissions

        User: TestDomain\TestUser
        Type: Allow
      Rights: Modify, ReadPermissions, Synchronize
 */

.NET Framework
Available since 2.0
Return to top
Show:
© 2016 Microsoft