/CLRUNMANAGEDCODECHECK (SuppressUnmanagedCodeSecurityAttribute の削除)

/CLRUNMANAGEDCODECHECKは、リンカーがマネージド コードからネイティブ DLL へのリンカーによって生成されたPInvoke呼び出しに適用SuppressUnmanagedCodeSecurityAttributeされないように指定します。

構文

/CLRUNMANAGEDCODECHECK
/CLRUNMANAGEDCODECHECK:NO

解説

既定では、リンカーによって生成されたPInvoke呼び出しに属性が適用されますSuppressUnmanagedCodeSecurityAttribute。 有効な場合 /CLRUNMANAGEDCODECHECK は削除 SuppressUnmanagedCodeSecurityAttribute されます。 リンカーによって生成されたPInvoke呼び出しに属性を明示的に適用SuppressUnmanagedCodeSecurityAttributeするには、次を使用/CLRUNMANAGEDCODECHECK:NOできます。

リンカーは、属性を使用して /clr コンパイルされるオブジェクトにのみ追加します /clr:pure。 ただし、 /clr:pure コンパイラ オプションは Visual Studio 2015 では非推奨となり、Visual Studio 2017 以降ではサポートされていません。

PInvokeリンカーがマネージド呼び出し元からの参照を満たすマネージド シンボルを見つけられないが、その参照を満たすネイティブ シンボルを見つけることができる場合、リンカーによって呼び出しが生成されます。 PInvoke の詳細については、「マネージド コードからのネイティブ関数の呼び出し」を参照してください。

コードで使用 AllowPartiallyTrustedCallersAttribute する場合は、属性を削除するように明示的に設定 /CLRUNMANAGEDCODECHECK する SuppressUnmanagedCodeSecurity 必要があります。 イメージに属性とAllowPartiallyTrustedCallers属性の両方SuppressUnmanagedCodeSecurityが含まれている場合、これは潜在的なセキュリティの脆弱性です。

使用SuppressUnmanagedCodeSecurityAttributeの影響の詳細については、「アンマネージド コードのセキュア コーディング ガイドライン」を参照してください

Visual Studio 開発環境でこのリンカー オプションを設定するには

  1. プロジェクトの [プロパティ ページ] ダイアログ ボックスを開きます。 詳しくは、「コンパイラとビルドのプロパティを設定する」をご覧ください。

  2. [構成プロパティ]>[リンカー]>[詳細] プロパティ ページを選択します。

  3. [CLR アンマネージド コード チェック] プロパティを変更します。

このリンカーをコードから設定するには

  1. 以下を参照してください。CLRUnmanagedCodeCheck

関連項目

MSVC リンカーのリファレンス
MSVC リンカー オプション