SemaphoreAccessRule SemaphoreAccessRule SemaphoreAccessRule SemaphoreAccessRule Class

定義

ユーザーまたはグループに許可されたアクセス権セットまたは拒否されたアクセス権セットを表します。Represents a set of access rights allowed or denied for a user or group. このクラスは継承できません。This class cannot be inherited.

public ref class SemaphoreAccessRule sealed : System::Security::AccessControl::AccessRule
[System.Runtime.InteropServices.ComVisible(false)]
[System.Security.SecurityCritical]
public sealed class SemaphoreAccessRule : System.Security.AccessControl.AccessRule
type SemaphoreAccessRule = class
    inherit AccessRule
Public NotInheritable Class SemaphoreAccessRule
Inherits AccessRule
継承
属性

次のコード例では、 AllowルールとDenyルールの分離を示し、互換性のあるルールでの権限の組み合わせを示します。The following code example demonstrates the separation between Allow rules and Deny rules, and shows the combination of rights in compatible rules. この例ではSemaphoreSecurity 、オブジェクトを作成し、現在のユーザーに対してさまざまな権限を許可および拒否するルールを追加し、結果として得られるルールのペアを表示します。The example creates a SemaphoreSecurity object, adds rules that allow and deny various rights for the current user, and displays the resulting pair of rules. 次に、現在のユーザーに対して新しい権限を許可し、その結果を表示して、新しい権限がAllow既存のルールとマージされていることを示します。The example then allows new rights for the current user and displays the result, showing that the new rights are merged with the existing Allow rule.

注意

この例では、 Semaphoreオブジェクトにセキュリティオブジェクトをアタッチしません。This example does not attach the security object to a Semaphore object. セキュリティオブジェクトをアタッチする例についてSemaphore.GetAccessControlSemaphore.SetAccessControl、「」および「」を参照してください。Examples that attach security objects can be found in Semaphore.GetAccessControl and Semaphore.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.
        SemaphoreSecurity mSec = new SemaphoreSecurity();

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

        // Add a rule that denies the current user the 
        // right to change permissions on the semaphore.
        rule = new SemaphoreAccessRule(user, 
            SemaphoreRights.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 semaphore. This rule
        // is merged with the existing Allow rule.
        rule = new SemaphoreAccessRule(user, 
            SemaphoreRights.ReadPermissions, 
            AccessControlType.Allow);
        mSec.AddAccessRule(rule);

        ShowSecurity(mSec);
    }

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

        foreach(SemaphoreAccessRule 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.SemaphoreRights);
            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
 */
Imports System.Threading
Imports System.Security.AccessControl
Imports System.Security.Principal

Public Class Example

    Public Shared Sub Main()

        ' Create a string representing the current user.
        Dim user As String = Environment.UserDomainName _ 
            & "\" & Environment.UserName

        ' Create a security object that grants no access.
        Dim mSec As New SemaphoreSecurity()

        ' Add a rule that grants the current user the 
        ' right to enter or release the semaphore.
        Dim rule As New SemaphoreAccessRule(user, _
            SemaphoreRights.Synchronize _
            Or SemaphoreRights.Modify, _
            AccessControlType.Allow)
        mSec.AddAccessRule(rule)

        ' Add a rule that denies the current user the 
        ' right to change permissions on the semaphore.
        rule = New SemaphoreAccessRule(user, _
            SemaphoreRights.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 semaphore. This 
        ' rule is merged with the existing Allow rule.
        rule = New SemaphoreAccessRule(user, _
            SemaphoreRights.ReadPermissions, _
            AccessControlType.Allow)
        mSec.AddAccessRule(rule)

        ShowSecurity(mSec)

    End Sub 

    Private Shared Sub ShowSecurity(ByVal security As SemaphoreSecurity)
        Console.WriteLine(vbCrLf & "Current access rules:" & vbCrLf)

        For Each ar As SemaphoreAccessRule In _
            security.GetAccessRules(True, True, GetType(NTAccount))

            Console.WriteLine("        User: {0}", ar.IdentityReference)
            Console.WriteLine("        Type: {0}", ar.AccessControlType)
            Console.WriteLine("      Rights: {0}", ar.SemaphoreRights)
            Console.WriteLine()
        Next

    End Sub
End Class 

'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

注釈

SemaphoreAccessRuleクラスは、名前付きシステムセマフォで Windows アクセス制御セキュリティを管理するために .NET Framework が提供するクラスのセットの1つです。The SemaphoreAccessRule class is one of a set of classes that the .NET Framework provides for managing Windows access control security on named system semaphores. これらのクラスの概要と、基になる Windows アクセス制御構造との関係についSemaphoreSecurityては、「」を参照してください。For an overview of these classes, and their relationship to the underlying Windows access control structures, see SemaphoreSecurity.

注意

Windows アクセス制御セキュリティは、名前付きシステムセマフォに対してのみ意味があります。Windows access control security is meaningful only for named system semaphores. Semaphoreオブジェクトがローカルセマフォを表す場合、アクセス制御は無関係です。If a Semaphore object represents a local semaphore, access control is irrelevant.

名前付きセマフォに現在適用されている規則の一覧を取得するSemaphore.GetAccessControlには、メソッドSemaphoreSecurityを使用してオブジェクトGetAccessRulesを取得し、そのメソッドSemaphoreAccessRuleを使用してオブジェクトのコレクションを取得します。To get a list of the rules currently applied to a named semaphore, use the Semaphore.GetAccessControl method to get a SemaphoreSecurity object, then use its GetAccessRules method to obtain a collection of SemaphoreAccessRule objects.

SemaphoreAccessRuleオブジェクトは、基になる随意アクセス制御リスト (DACL) のアクセス制御エントリと一対一でマップされません。SemaphoreAccessRule objects do not map one-to-one with access control entries in the underlying discretionary access control list (DACL). セマフォのすべてのアクセスルールのセットを取得すると、そのセットには、すべてのアクセス制御エントリを表すために現在必要なルールの最小数が含まれます。When you get the set of all access rules for a semaphore, the set contains the minimum number of rules currently required to express all the access control entries.

注意

ルールを適用および削除すると、基になるアクセス制御エントリが変わります。The underlying access control entries change as you apply and remove rules. 可能であれば、ルール内の情報を結合して、アクセス制御エントリの最小数を維持します。The information in rules is merged if possible, to maintain the smallest number of access control entries. したがって、現在のルールの一覧を読むと、追加したすべてのルールの一覧とまったく同じように表示されない場合があります。Thus, when you read the current list of rules, it might not look exactly like the list of all the rules you have added.

オブジェクトSemaphoreAccessRuleを使用して、ユーザーまたはグループに対して許可または拒否するアクセス権を指定します。Use SemaphoreAccessRule objects to specify access rights to allow or deny to a user or group. オブジェクトSemaphoreAccessRuleは常に、許可されたアクセスまたは拒否されたアクセスのいずれかを表します。A SemaphoreAccessRule object always represents either allowed access or denied access, never both.

名前付きシステムセマフォに規則を適用するには、 Semaphore.GetAccessControlメソッドを使用しSemaphoreSecurityてオブジェクトを取得します。To apply a rule to a named system semaphore, use the Semaphore.GetAccessControl method to get the SemaphoreSecurity object. 規則を追加するメソッドを使用してSemaphore.SetAccessControl オブジェクトを変更し、メソッドを使用してセキュリティオブジェクトを再アタッチします。SemaphoreSecurityModify the SemaphoreSecurity object by using its methods to add the rule, and then use the Semaphore.SetAccessControl method to reattach the security object.

重要

SemaphoreSecurityオブジェクトに対して行った変更は、 Semaphore.SetAccessControlメソッドを呼び出して、変更されたセキュリティオブジェクトを名前付きセマフォに割り当てるまで、名前付きセマフォのアクセスレベルには影響しません。Changes you make to a SemaphoreSecurity object do not affect the access levels of the named semaphore until you call the Semaphore.SetAccessControl method to assign the altered security object to the named semaphore.

SemaphoreAccessRuleオブジェクトは変更できません。SemaphoreAccessRule objects are immutable. セマフォのセキュリティは、 SemaphoreSecurityクラスのメソッドを使用して、規則を追加または削除することによって変更されます。これを行うと、基になるアクセス制御エントリが変更されます。Security for a semaphore is modified using the methods of the SemaphoreSecurity class to add or remove rules; as you do this, the underlying access control entries are modified.

注意

同期オブジェクトのセキュリティは、Windows 98 または Windows Millennium Edition ではサポートされていません。Security on synchronization objects is not supported for Windows 98 or Windows Millennium Edition.

コンストラクター

SemaphoreAccessRule(IdentityReference, SemaphoreRights, AccessControlType) SemaphoreAccessRule(IdentityReference, SemaphoreRights, AccessControlType) SemaphoreAccessRule(IdentityReference, SemaphoreRights, AccessControlType) SemaphoreAccessRule(IdentityReference, SemaphoreRights, AccessControlType)

規則を適用するユーザーまたはグループ、アクセス権、および指定したアクセス権を許可するかどうかを指定して、SemaphoreAccessRule クラスの新しいインスタンスを初期化します。Initializes a new instance of the SemaphoreAccessRule class, specifying the user or group the rule applies to, the access rights, and whether the specified access rights are allowed or denied.

SemaphoreAccessRule(String, SemaphoreRights, AccessControlType) SemaphoreAccessRule(String, SemaphoreRights, AccessControlType) SemaphoreAccessRule(String, SemaphoreRights, AccessControlType) SemaphoreAccessRule(String, SemaphoreRights, AccessControlType)

規則を適用するユーザーまたはグループの名前、アクセス権、および指定したアクセス権を許可するかどうかを指定して、SemaphoreAccessRule クラスの新しいインスタンスを初期化します。Initializes a new instance of the SemaphoreAccessRule class, specifying the name of the user or group the rule applies to, the access rights, and whether the specified access rights are allowed or denied.

プロパティ

AccessControlType AccessControlType AccessControlType AccessControlType

この AccessControlType オブジェクトに関連付けられている AccessRule 値を取得します。Gets the AccessControlType value associated with this AccessRule object.

(Inherited from AccessRule)
AccessMask AccessMask AccessMask AccessMask

この規則のアクセス マスクを取得します。Gets the access mask for this rule.

(Inherited from AuthorizationRule)
IdentityReference IdentityReference IdentityReference IdentityReference

この規則を適用する IdentityReference を取得します。Gets the IdentityReference to which this rule applies.

(Inherited from AuthorizationRule)
InheritanceFlags InheritanceFlags InheritanceFlags InheritanceFlags

この規則を子オブジェクトが継承する方法を決定するフラグの値を取得します。Gets the value of flags that determine how this rule is inherited by child objects.

(Inherited from AuthorizationRule)
IsInherited IsInherited IsInherited IsInherited

この規則を明示的に設定するか、または親コンテナー オブジェクトから継承するかを指定する値を取得します。Gets a value indicating whether this rule is explicitly set or is inherited from a parent container object.

(Inherited from AuthorizationRule)
PropagationFlags PropagationFlags PropagationFlags PropagationFlags

反映フラグの値を取得します。このフラグから、この規則を子オブジェクトに反映させる方法を判断します。Gets the value of the propagation flags, which determine how inheritance of this rule is propagated to child objects. このプロパティは、InheritanceFlags 列挙体の値が None でない場合にのみ重要です。This property is significant only when the value of the InheritanceFlags enumeration is not None.

(Inherited from AuthorizationRule)
SemaphoreRights SemaphoreRights SemaphoreRights SemaphoreRights

アクセス規則で許可されたアクセス権または拒否されたアクセス権を取得します。Gets the rights allowed or denied by the access rule.

メソッド

Equals(Object) Equals(Object) Equals(Object) Equals(Object)

指定したオブジェクトが、現在のオブジェクトと等しいかどうかを判断します。Determines whether the specified object is equal to the current object.

(Inherited from Object)
GetHashCode() GetHashCode() GetHashCode() GetHashCode()

既定のハッシュ関数として機能します。Serves as the default hash function.

(Inherited from Object)
GetType() GetType() GetType() GetType()

現在のインスタンスの Type を取得します。Gets the Type of the current instance.

(Inherited from Object)
MemberwiseClone() MemberwiseClone() MemberwiseClone() MemberwiseClone()

現在の Object の簡易コピーを作成します。Creates a shallow copy of the current Object.

(Inherited from Object)
ToString() ToString() ToString() ToString()

現在のオブジェクトを表す文字列を返します。Returns a string that represents the current object.

(Inherited from Object)

適用対象

こちらもご覧ください