Хочется работоспособности под все Висты, и без действий со стороны пользователя.
ТЗ звучит примерно так — драйвер стартуется при загрузке системы — создаёт своё виртуальное устройство. Которое я потом благополучно юзаю... Причём подобный старт хочется делать и под Вистой. Под Вистой динамическая регистрация драйвера не прокатывает в силу того, что OpenSCManager не даёт доступа к манагеру сервисов (ошибка номер 5). Т.е. банально динамически грузить драйвер при старте не прокатывает — надо его регить и потом как то создавать девайс и обращаться к нему...
А вот как инсталировать драйвер программно и потом его юзать —
я и пытаюсь понять... нашёл пару примеров — но они не очень рабочие.
Эх — сорри! Попутал кнопку и вместо ответа в существующую тему завёл новую тему. Сейчас постараюсь убрать
Под обычными записями юзеров не прокатывает. Пока что пользую вот такой метод регистрации для автоматического запуска:
hService = CreateService(hServiceManager,
DRIVER_NAME,
DRIVER_NAME,
SERVICE_ALL_ACCESS,
SERVICE_KERNEL_DRIVER,
SERVICE_SYSTEM_START,
SERVICE_ERROR_NORMAL,
DRIVER_BINARY,
DRIVER_GROUP,
&tdifw_tag,
DRIVER_DEPENDS,
NULL,
NULL
);
Работает под администраторскими записями в XP и в Vista 32 и 64. И обратиться к сервису через CreateFile видать можно только из администраторского режима. Во всяком случае, пока у меня по этому поводу лезут глюки...
Невозможно ( если не брать в расчет использование уязвимости для повышения привилегий ) установить драйвер из-под ограниченного аккаунта, никаким способом. И с этим не надо бороться. Это не глюки. Посмотрите, как другие продукты решают подобные проблемы ( какие выдают мессаги и.т.п ). IMHO, выдача сообщения о необходимости запустить инсталлятор от имени администратора — нормальный ход.