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
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) のアクセス制御エントリと 1 対 1 ではマップできません。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. ASemaphoreAccessRule表しますへのアクセスを許可または拒否のいずれかにアクセスすることはありません両方を常にオブジェクトします。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. 変更、 SemaphoreSecurity 、ルールを追加し、使用してそのメソッドを使用して、オブジェクト、Semaphore.SetAccessControlセキュリティ オブジェクトを再アタッチするメソッド。Modify 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)

適用対象

こちらもご覧ください