Модераторы: feodorv, GremlinProg, xvr, Fixin
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Регистрация драйвера в системе 
V
    Опции темы
EnergoHokum
Дата 14.12.2008, 17:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 600
Регистрация: 10.11.2006
Где: Россия, Ставропол ь

Репутация: 3
Всего: 6



Доброго времени суток всем. Вопрос такой: есть драйвер (DLPortio, управление LPT-портом). Есть программа, устанавливающая его. Программа организована в виде обыкновенной инсталляшки с тучей кнопочек "Next" -> "Next" и т. д. Драйвер нужно прописывать в систему "одним щелчком мыши". Экспериментально раскопал, что помимо копирования файла драйвера и сопутствующей DLL-ки для его работы нужно создать следующие ключи реестра:

Код

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\SharedDlls]
"C:\\WINDOWS\\system32\\DRIVERS\\DLPORTIO.sys"=dword:00000001
"C:\\WINDOWS\\system32\\DRIVERS\\Ctl3d32.dll"=dword:00000001
"C:\\WINDOWS\\system32\\DLPORTIO.dll"=dword:00000001

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\DLPortIO]
"DisplayName"="DriverLINX Port I/O Driver"
"ErrorControl"=dword:00000001
"Group"="SST miniport drivers"
"Start"=dword:00000002
"Tag"=dword:00000001
"Type"=dword:00000001

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\DLPortIO\Enum]
"0"="Root\\LEGACY_DLPORTIO\\0000"
"Count"=dword:00000001
"NextInstance"=dword:00000001

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\Root\LEGACY_DLPORTIO]
"NextInstance"=dword:00000001

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\Root\LEGACY_DLPORTIO\0000]
"Service"="DLPortIO"
"Legacy"=dword:00000001
"ConfigFlags"=dword:00000000
"Class"="LegacyDriver"
"ClassGUID"="{8ECC055D-047F-11D1-A537-0000F8753ED1}"
"DeviceDesc"="DriverLINX Port I/O Driver"

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\Root\LEGACY_DLPORTIO\0000\Control]
"*NewlyCreated*"=dword:00000000
"ActiveService"="DLPortIO"


Вот только ветка CurrentControlSet, как оказалось, создаётся динамически, и кроме пользователя System прав на запись туда никто не имеет. Равно как и в ветки ControlSet00n. Как происходит (по науке) регистрация драйвера в системе, и можно-ли её выполнить, используя сценарий комстроки (как вариант, VBS)?
PM MAIL ICQ   Вверх
jonie
Дата 14.12.2008, 18:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 5613
Регистрация: 21.8.2005
Где: Владимир

Репутация: 7
Всего: 118



это драйвер в стиле NT или WDM? ибо вторые устанавливаются используя SCM


--------------------
Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет...
PM MAIL Jabber   Вверх
ama_kid
Дата 14.12.2008, 18:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


АСУТП-кодер
***


Профиль
Группа: Комодератор
Сообщений: 1460
Регистрация: 5.3.2007
Где: Москва

Репутация: 5
Всего: 95



Цитата(EnergoHokum @  14.12.2008,  18:07 Найти цитируемый пост)
Как происходит (по науке) регистрация драйвера в системе, и можно-ли её выполнить, используя сценарий комстроки (как вариант, VBS)? 
1) Вызов OpenSCManager
2) Вызов CreateService (при этом создадутся все необходимые ключи реестра)
3) Закрытие хендлов
4) Вызов команды "net start DriverName" запускает драйвер на исполнение.
Удаление драйвера из системы происходит аналогично:
1) "Net Stop DriverName"
2) OpenSCManager
3) OpenService
4) DeleteService
5) Закрытие хендлов...


Это сообщение отредактировал(а) ama_kid - 14.12.2008, 18:43


--------------------
самурай без меча подобен самураю с мечом, но только без меча 
PM MAIL   Вверх
EnergoHokum
Дата 16.12.2008, 20:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 600
Регистрация: 10.11.2006
Где: Россия, Ставропол ь

Репутация: 3
Всего: 6



Сделал по совету ama_kid, вроде работает всё. Спасибо!
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Системное программирование и WinAPI"
Fixin
GremlinProg
xvr
feodorv
  • Большое количество информации и примеров с использованием функций WinAPI можно найти в MSDN
  • Описание сообщений, уведомлений и примеров с использованием компонент WinAPI (BUTTON, EDIT, STATIC, и т.п.), можно найти в MSDN Control Library
  • Непосредственно, перед созданием новой темы, проверьте заголовок и удостоверьтесь, что он отражает суть обсуждения.
  • После заполнения поля "Название темы", обратите внимание на наличие и содержание панели "А здесь смотрели?", возможно Ваш вопрос уже был решен.
  • Приводите часть кода, в которой предположительно находится проблема или ошибка.
  • Если указываете код, пользуйтесь тегами [code][/code], или их кнопочными аналогами.
  • Если вопрос решен, воспользуйтесь соответствующей ссылкой, расположенной напротив названия темы.
  • Один топик - один вопрос!
  • Перед тем как создать тему - прочтите это .

На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы .


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема »


 




[ Время генерации скрипта: 0.0762 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.