IAntimalwareProvider インターフェイス (amsi.h)
マルウェア対策製品のプロバイダーを表します。 コード例については、 IAntimalwareProvider インターフェイスのサンプルを参照してください。
IAntimalwareProvider インターフェイスは、IUnknown インターフェイスから継承します。
継承
IAntimalwareProvider インターフェイスは、IUnknown インターフェイスから継承します。
メソッド
IAntimalwareProvider インターフェイスには、これらのメソッドがあります。
IAntimalwareProvider::CloseSession セッションを閉じます。 (IAntimalwareProvider.CloseSession) |
IAntimalwareProvider::D isplayName 表示するマルウェア対策プロバイダーの名前。 |
IAntimalwareProvider::Scan コンテンツのストリームをスキャンします。 (IAntimalwareProvider.Scan) |
注釈
Windows 10バージョン 1903 の時点で、Windows では、プロバイダーの Authenticode 署名チェックを有効にする方法が追加されました。 この機能は、32 ビットプロセスと 64 ビット プロセスの両方で、既定で無効になっています。 テスト目的でプロバイダーを作成する場合は、次の Windows レジストリ値を適切に設定することで、署名チェックを有効または無効にすることができます。 値は DWORD です。
Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\AMSI\FeatureBits
値 | 動作 |
---|---|
0x1 | 署名チェックが無効になっています。 これが既定の動作です。 この値は、テスト中に一時的に使用することもできます。 |
0x2 | Authenticode 署名のチェックが有効になっています。 |
レジストリ値を完全に削除すると、0x1値が存在するかのように動作します。
注意
プロバイダーは、スイッチ (SignTool を使用) を使用/ac
して Authenticode 証明書とのクロス署名を行う必要があります。 バイナリに署名したら、SignTool と /kp
オプションを使用して検証できます。 SignTool からエラーが返されない場合、バイナリは正しく署名されます。
重要
Windows レジストリの値がオペレーティング システムによって保護されていない場合でも、コンピューターのウイルス対策プロバイダーによって値が保護され、書き込み保護される場合があります。
プロバイダーが読み込み中かどうかをチェックするには、コード整合性イベントを表示できます。 コード整合性診断イベントの詳細ログ記録を有効にしてください。 検索するイベント ID は 3040 と 3041 です。 次に例をいくつか示します。
Log Name: Microsoft-Windows-CodeIntegrity/Verbose
Source: Microsoft-Windows-CodeIntegrity
Date: M/DD/YYYY H:MM:SS PM
Event ID: 3040
Task Category: (14)
Level: Verbose
Keywords:
User: [DOMAIN_NAME]\Administrator
Computer: [COMPUTER_NAME]
Description:
Code Integrity started retrieving the cached data of [PATH_AND_FILENAME] file.
Event Xml:
<Event xmlns="http://schemas.microsoft.com/win/2004/08/events/event">
<System>
<Provider Name="Microsoft-Windows-CodeIntegrity" Guid="{4ee76bd8-3cf4-44a0-a0ac-3937643e37a3}" />
<EventID>3040</EventID>
<Version>0</Version>
<Level>5</Level>
<Task>14</Task>
<Opcode>1</Opcode>
<Keywords>0x4000000000000000</Keywords>
<TimeCreated SystemTime="YYYY-MM-DDT02:26:48.875954700Z" />
<EventRecordID>7</EventRecordID>
<Correlation />
<Execution ProcessID="4972" ThreadID="7752" ProcessorID="1" KernelTime="14" UserTime="2" />
<Channel>Microsoft-Windows-CodeIntegrity/Verbose</Channel>
<Computer>[COMPUTER_NAME]</Computer>
<Security UserID="[USER_SID]" />
</System>
<EventData>
<Data Name="FileNameLength">40</Data>
<Data Name="FileNameBuffer">[PATH_AND_FILENAME]</Data>
</EventData>
</Event>
Log Name: Microsoft-Windows-CodeIntegrity/Verbose
Source: Microsoft-Windows-CodeIntegrity
Date: M/DD/YYYY H:MM:SS PM
Event ID: 3041
Task Category: (14)
Level: Verbose
Keywords:
User: [DOMAIN_NAME]\Administrator
Computer: [COMPUTER_NAME]
Description:
Code Integrity completed retrieval of file cache. Status 0xC0000225.
Event Xml:
<Event xmlns="http://schemas.microsoft.com/win/2004/08/events/event">
<System>
<Provider Name="Microsoft-Windows-CodeIntegrity" Guid="{4ee76bd8-3cf4-44a0-a0ac-3937643e37a3}" />
<EventID>3041</EventID>
<Version>2</Version>
<Level>5</Level>
<Task>14</Task>
<Opcode>2</Opcode>
<Keywords>0x4000000000000000</Keywords>
<TimeCreated SystemTime="YYYY-MM-DDT02:26:48.875964700Z" />
<EventRecordID>8</EventRecordID>
<Correlation />
<Execution ProcessID="4972" ThreadID="7752" ProcessorID="1" KernelTime="14" UserTime="2" />
<Channel>Microsoft-Windows-CodeIntegrity/Verbose</Channel>
<Computer>[COMPUTER_NAME]</Computer>
<Security UserID="[USER_SID]" />
</System>
<EventData>
<Data Name="Status">0xc0000225</Data>
<Data Name="CachedFlags">0x0</Data>
<Data Name="CacheSource">0</Data>
<Data Name="CachedPolicy">0</Data>
</EventData>
</Event>
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows 10 [デスクトップ アプリのみ] |
サポートされている最小のサーバー | Windows Server 2016 [デスクトップ アプリのみ] |
対象プラットフォーム | Windows |
ヘッダー | amsi.h |