次の方法で共有


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

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

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

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

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

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

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

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

関連項目

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