Есть два подхода, о которых я знаю. Первый и самый простой - зарегистрировать специальное сообщение Windows «QueryCancelAutoPlay» и просто вернуть 1, когда сообщение обработано. Это работает только для текущего окна, а не для фонового приложения.
Второй подход требует вставки объекта, который реализует интерфейс COM IQueryCancelAutoPlay
COM-интерфейс в таблицу запущенных объектов.