Imports System
Imports System.Threading
Imports System.Security.AccessControl
Imports System.Security.Principal
Public Class Example
Public Shared Sub Main()
Dim user As String = Environment.UserDomainName & "\" & Environment.UserName
Dim mSec As New MutexSecurity()
Dim ruleA As New MutexAccessRule(user,MutexRights.Synchronize Or MutexRights.Modify,AccessControlType.Allow)
mSec.AddAccessRule(ruleA)
Dim rule As New MutexAccessRule(user,MutexRights.ChangePermissions,AccessControlType.Deny)
mSec.AddAccessRule(rule)
ShowSecurity(mSec)
rule = New MutexAccessRule(user, MutexRights.ReadPermissions, AccessControlType.Allow)
mSec.AddAccessRule(rule)
ShowSecurity(mSec)
Console.WriteLine("Use RemoveAccessRuleSpecific on the original rule.")
mSec.RemoveAccessRuleSpecific(ruleA)
ShowSecurity(mSec)
Console.WriteLine("Use RemoveAccessRuleSpecific with the correct rights.")
rule = New MutexAccessRule(user,MutexRights.Synchronize Or MutexRights.Modify Or MutexRights.ReadPermissions, AccessControlType.Allow)
mSec.RemoveAccessRuleSpecific(rule)
ShowSecurity(mSec)
End Sub
Private Shared Sub ShowSecurity(ByVal security As MutexSecurity)
Console.WriteLine("Current access rules:")
For Each ar As MutexAccessRule In security.GetAccessRules(True, True, GetType(NTAccount))
Console.WriteLine("User: {0}", ar.IdentityReference)
Console.WriteLine("Type: {0}", ar.AccessControlType)
Console.WriteLine("Rights: {0}", ar.MutexRights)
Next
End Sub
End Class