Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » отключение устройств

Ответить
Настройки темы
отключение устройств

Аватара для chek

Ветеран


Сообщения: 508
Благодарности: 10

Профиль | Отправить PM | Цитировать


Изображения
Тип файла: gif Безымянный.gif
(35.9 Kb, 27 просмотров)
подскажите пожалуйста, каким методом можно решить такую задачу : написать программу которая отключала бы USB, Сd-Rom и Floppy. (т.е. отключение флопика, дисковода и портов USB). меня интересует алгоритм написания данной программы.
мои идеи изменять параметры реестра которые отвечают за отключение устройств в диспетчере устройств.

Отправлено: 18:29, 25-06-2007

 

Аватара для DillerInc

Обратный инженер


Сообщения: 644
Благодарности: 47

Профиль | Отправить PM | Цитировать


chek
Я думаю,что надо смотреть в сторону функции DeviceIoControl и её разнообразных IOCTL-кодов.Данная функция является в некотором роде посредником между пользовательскими программи и драйверами режима ядра.В частности имеется ввиду драйвер того же CD-ROM'а.
В общем,смотри тут и потом вперёд на MSDN.

-------
То,что неясно,следует выяснить.То,что трудно творить,следует делать с великой настойчивостью. © Конфуций


Отправлено: 22:52, 25-06-2007 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Googler


Сообщения: 3665
Благодарности: 1563

Профиль | Отправить PM | Цитировать


chek
В ресурс-ките есть утилита DevCon, которая в числе прочего может отключать/включать устройства... а в DDK есть ее исходник, если есть желание поковырять то вот он: http://forum.oszone.net/attachment.p...achmentid=4080

ADD: по поводу ключей реестра вот линк на ADM-файл политики который включает/выключает соответствующие драйверы установкой параметра "Start"=4 , но применение требует перезагрузки: http://support.microsoft.com/kb/555324/en-us

HKLM\SYSTEM\CurrentControlSet\Services\UsbStor
HKLM\SYSTEM\CurrentControlSet\Services\Cdrom
HKLM\SYSTEM\CurrentControlSet\Services\Flpydisk

Последний раз редактировалось amel27, 26-06-2007 в 04:35.


Отправлено: 04:23, 26-06-2007 | #3


Аватара для chek

Ветеран


Сообщения: 508
Благодарности: 10

Профиль | Отправить PM | Цитировать


amel27
большое спасибо.
а вы можете написать часть программы на си билдере которая бы и изменяла этот параметр реестр при нажатии на кнопку??

Последний раз редактировалось chek, 26-06-2007 в 13:38.


Отправлено: 13:30, 26-06-2007 | #4


Googler


Сообщения: 3665
Благодарности: 1563

Профиль | Отправить PM | Цитировать


chek
к сожалению нет - я не программер.. Гугль в помощь

Отправлено: 13:03, 27-06-2007 | #5


Аватара для chek

Ветеран


Сообщения: 508
Благодарности: 10

Профиль | Отправить PM | Цитировать


amel27
ну и на том спасибо, будем искать...

Отправлено: 23:11, 27-06-2007 | #6


Аватара для DillerInc

Обратный инженер


Сообщения: 644
Благодарности: 47

Профиль | Отправить PM | Цитировать


chek
Что искать-то??Вы программист или нет...или,по-крайней мере,хотите им стать...?

Вот основной кусок кода на ассемблере.Думаю,суть сможете уловить:

Код: Выделить весь код
.data

szRegCdromPath     db     "SYSTEM\CurrentControlSet\Services\Cdrom",0
szStartParam       db     "Start",0


.code

; ################## start ##########################
start proc

 LOCAL hKey:HANDLE
 LOCAL QueryData:DWORD
 LOCAL WriteData:DWORD
 LOCAL cbData:DWORD
 LOCAL acBuffer[64]:CHAR

; /* Открываем нужный ключ реестра */
      lea    eax, hKey
      push   eax
      push   KEY_ALL_ACCESS
      push   0
      push   offset szRegCdromPath
      push   HKEY_LOCAL_MACHINE
      call   RegOpenKeyEx
      test   eax, eax                      ; ERROR_SUCCESS == 0
      jnz    @@failed_open_reg

; /* Мы хотим считать четыре байта (DWORD) */ 
      mov    cbData, sizeof DWORD

; /* Проверяем оригинальный параметр и его значение (опционально) */
      lea    eax, cbData
      push   eax
      lea    eax, QueryData
      push   eax
      push   NULL
      push   NULL
      push   offset szStartParam
      push   hKey
      call   RegQueryValueEx
      test   eax, eax
      jnz    @@failed_query_reg

      cmp    cbData, sizeof DWORD
      jnz    @@failed_query_reg

; /* Заносим в буфер значение 0х4 */
      mov    WriteData, SERVICE_DISABLED

; /* Устанавливаем новое значение параметра "Start" */
      push   cbData
      lea    eax, WriteData
      push   eax
      push   REG_DWORD
      push   0
      push   offset szStartParam
      push   hKey
      call   RegSetValueEx
      test   eax, eax
      jnz    @@failed_set_reg 
      ...
Дело в том,что тот же драйвер cdrom.sys представляется в системе как сервис.Ключ реестра "Cdrom" содержит необходимую информацию,требуемую для нормальной работы этого драйвера.
Параметр этого ключа,называемый "Start",характеризует то,как этот драйвер запускается.В данном случае нас интересуют два значения:

SERVICE_SYSTEM_START
0x00000001
Запускается при на ранних стадиях инициализации системы(значение по-умолчанию)

SERVICE_DISABLED
0x00000004
Отключение сервиса.Драйвер не может быть запущен.

-------
То,что неясно,следует выяснить.То,что трудно творить,следует делать с великой настойчивостью. © Конфуций


Отправлено: 15:27, 28-06-2007 | #7



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » отключение устройств

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Разное - Изменить названия устройств в Диспетчере устройств DIMM2005 Microsoft Windows 2000/XP 8 31-03-2018 22:02
Утилиты - [addon] USBDeview - просмотр и отключение USB устройств Stanner Наборы обновлений для Windows XP/2003/Windows 7 38 29-08-2008 18:24
Выборочное отключение устройств USB. babki Microsoft Windows NT/2000/2003 7 04-04-2007 18:34
Отключение всех USB-устройств кроме принтеров Kirill NN Microsoft Windows NT/2000/2003 14 11-10-2006 18:30
отключение устройств в компе chek Программирование и базы данных 6 18-05-2006 10:31




 
Переход