次の方法で共有


IStackWalk.Assert メソッド

スタック内の上位にある呼び出し元に、現在のアクセス許可オブジェクトによって識別されているリソースへのアクセス許可がない場合でも、呼び出しコードがそのリソースにアクセスできるようにアサートします。

Sub Assert()
[C#]
void Assert();
[C++]
void Assert();
[JScript]
function Assert();

例外

例外の種類 条件
SecurityException 呼び出しコードに SecurityPermissionFlag.Assertion が指定されていません。

解説

Assert を呼び出すと、コール スタック内の上位にある呼び出し元に対するアクセス許可のチェックが中止されます。そのため、上位の呼び出し元に必要なアクセス許可が与えられていなくても、リソースにアクセスできます。アサーションは、 Assert を呼び出すコードが、アサート対象のアクセス許可に関するセキュリティ チェックに合格している場合にだけ有効です。

Assert の呼び出しは、呼び出しコードが呼び出し元に戻るか、後続の Assert 呼び出しによって前回のアサーションが無効になるまで有効です。 RevertAssert または RevertAll は、保留中の Assert を削除します。

与えられていないアクセス許可を要求しても失敗するため、そのようなアクセス許可に対して Assert を呼び出しても無視されます。しかし、コール スタック内の下位にあるコードがそのアクセス許可に対して Demand を呼び出すと、 Assert の呼び出しを試行するコードにスタック ウォークが達したときに、 SecurityException がスローされます。これは、コードが Assert を呼び出してアクセス許可をアサートしようとしても、 Assert を呼び出したコードにそのアクセス許可が与えられていないために発生します。

注意    Assert を呼び出すと、呼び出しチェインのすべてのコードに、指定されたリソースへのアクセス許可が与えられている必要があるという要件がなくなります。そのため、このメソッドの使い方を誤るとセキュリティ上の問題が発生する可能性があります。したがって、使用する場合は十分に注意してください。

必要条件

プラットフォーム: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 ファミリ

参照

IStackWalk インターフェイス | IStackWalk メンバ | System.Security 名前空間 | Assert | セキュリティ チェックのオーバーライド