/CLRUNMANAGEDCODECHECK (SupressUnmanagedCodeSecurityAttribute の追加)
更新 : 2007 年 11 月
/CLRUNMANAGEDCODECHECK は、マネージ コードからネイティブ DLL への、リンカによって生成された PInvoke 呼び出しに対して、SuppressUnmanagedCodeSecurityAttribute を適用するかどうかを指定します。
/CLRUNMANAGEDCODECHECK[:NO]
解説
既定では、リンカによって生成された PInvoke 呼び出しに対して、SuppressUnmanagedCodeSecurityAttribute が適用されます。/CLRUNMANAGEDCODECHECK を有効にすると、SuppressUnmanagedCodeSecurityAttribute が適用されません。
リンカは、/clr または /clr:pure を指定してコンパイルされたオブジェクトだけに、この属性を適用します。/clr:safe を指定してコンパイルされたオブジェクトでは、PInvoke 呼び出しは生成されません。詳細については、「/clr (共通言語ランタイムのコンパイル)」を参照してください。
PInvoke 呼び出しは、リンカが、マネージ呼び出し元からの参照に適合するマネージ シンボルは検出できないが、その参照に適合するネイティブ シンボルは検出できる場合に、リンカによって生成されます。PInvoke の詳細については、「マネージ コードからのネイティブ関数の呼び出し」を参照してください。
コードで AllowPartiallyTrustedCallersAttribute を使用する場合は、明示的に /CLRUNMANAGEDCODECHECK を設定する必要があります。イメージに SuppressUnmanagedCodeSecurity 属性および AllowPartiallyTrustedCallers 属性の両方が含まれる場合、セキュリティ上の脆弱性が生じる可能性があります。
SuppressUnmanagedCodeSecurityAttribute を使用する意味の詳細については、「セキュリティの最適化」を参照してください。
Visual Studio 開発環境でこのリンカ オプションを設定するには
プロジェクトの [プロパティ ページ] ダイアログ ボックスを開きます。詳細については、「方法 : プロジェクト プロパティ ページを開く」を参照してください。
[構成プロパティ] ノードを展開します。
[リンカ] ノードを展開します。
[詳細] プロパティ ページをクリックします。
[CLR アンマネージ コード チェック] プロパティを変更します。
このリンカをコードから設定するには
- CLRUnmanagedCodeCheck を参照してください。