Как достоверно проверить, включен ли автозапуск в Windows 7? - PullRequest
1 голос
/ 10 ноября 2010

У меня есть приложение, которое обрабатывает WM_DEVICECHANGE и заинтересовано в DBT_DEVICEARRIVAL.Когда новое устройство вставлено, ему нужно знать, появится ли диалоговое окно автозапуска.Чтобы узнать это, я проверяю значения NoDriveAutoRun и NoDriveTypeAutoRun в

ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ \ Microsoft \ Windows \ CurrentVersion \ Policies \ Explorer

в HKCU и HKLM.Однако если пользователь заходит в «Панель управления -> Автозапуск» и снимает флажок «Использовать автозапуск для всех носителей и устройств», тогда автозапуск фактически отключен, но эти параметры реестра не установлены.На моем тестовом боксе их даже нет по умолчанию.И я полагаю, что большинство пользователей будет использовать подход панели управления для отключения автозапуска, а не редактора локальной групповой политики.

Итак, мой вопрос, что это за параметр галочки (значение реестра где-то, я полагаю,?).Неважно, что я пытаюсь, я не могу (достоверно) выяснить, включен ли автозапуск или нет.

1 Ответ

0 голосов
/ 10 ноября 2010

Кажется, что глагол «Автозапуск» появляется в контекстном меню привода CD-ROM, когда автозапуск включен. Так что вы можете проверить это.

  • Получите указатель интерфейса на оболочку IContextMenu для вашего привода CD-ROM, используя IShellFolder :: GetUIObjectOf
  • Используйте GetCommandString , чтобы пройти по списку глаголов, ища «Автозапуск»
...