許可されるアクセス許可セットの計算
更新 : 2007 年 11 月
共通言語ランタイムは、関連する各ポリシー レベルに含まれるコード グループ階層構造を調べることによって、アプリケーション ドメインおよびアセンブリに許可されるアクセス許可セットを計算します。アプリケーション ドメインの場合、関連するポリシー レベルはエンタープライズ、マシン、およびユーザーです。アセンブリの場合は、関連するポリシー レベルはエンタープライズ、マシン、ユーザー、およびアプリケーション ドメインです。
ランタイムは、許可されるアクセス許可セットを次の手順で計算します。
関連する各ポリシー レベルについて、証拠により提示される識別情報を使用して、コードが属するコード グループを判断します。コードがいずれかのグループのメンバである場合、そのグループはコードに一致していると言えます。
この一致の検索は、すべてのコード グループに対して、コード グループ階層構造の最上位から開始されます。ランタイムは階層構造内の各レベルを検索します。親グループに一致するグループが見つかった場合は、その子グループも検索されます。
階層構造内で一致するグループをすべて識別すると、一致した各コード グループに関連付けられているアクセス許可を結合してそれらの和集合を求め、結果として、そのポリシー レベルで許可されるアクセス許可セットを得ます。
ただし、Exclusive 属性または LevelFinal 属性がコード グループに適用されている場合は、許可されるアクセス許可セットの計算方法が異なります。詳細については、「コード グループ属性」を参照してください。
ランタイムは階層構造の検索を繰り返し、各ポリシー レベルで許可されるアクセス許可セットの積集合を求めて、アプリケーション ドメインまたはアセンブリに許可されるアクセス許可セットを計算します。最終的なアクセス許可セットには、すべてのポリシー レベルで許可されるアクセス許可だけが含まれます。
コード グループ階層構造を次の図に示します。この構造では、Microsoft® Money が All code、Microsoft (発行元)、Local Internet (ゾーン)、および Microsoft Money (名前) という 4 つのコード グループのメンバとなっています。ポリシー レベル (マシン、ユーザー、またはアプリケーション ドメイン) で許可されるアクセス許可セットは、それぞれのレベルの各コード グループに関連付けられた名前付きアクセス許可セットを加算した結果 (和集合) になります。
コード グループの階層構造