помогите решить проблему с драйвером
От: aay  
Дата: 06.03.06 12:34
Оценка:
В общем ситуация такая. Есть компьютер (под windows 2000) в который устанавливается девайс (мультипортовая плата, стороннего поставщика) и естественно устанавливается драйвер. При установке драйвера устанавливаются ещё дополнительные у-ва (СОМ порты). Причём драйвера неподписанные. Вроде бы всё работает но есть одна загвоздка. Иногда возникает необходимость заменить установленный девайс на точно такой же. Новый девайс подключается вместо старого в тот же слот. Однако после замены винда почему-то не желает подхватывать имеющиеся в системе драйвера и предлагает установить их заново. Осложняется это всё ещё и тем что пользователь работает за компьютером под правами User и давать ему права администратора или Power User категорически нельзя (а без этого установить драйвер он не может). Можно ли как-нибудь переубедить винду чтобы она подхватывала уже имеющиеся в системе драйвера или на крайний случай автоматизировать этот процесс? Например дать пользователю пару программ в один щелчёк, чтобы первая запускалась перед заменой у-ва, а вторая после. Или может быть можно подправить дистрибутив с драйверами (может драйверописатели начудили что-то не так)?
Пока я вижу несколько возможных путей, но не знаю приведут ли они к победе:
1) Писать программы для установки и удаления драйверов. (нет достаточного опыта в области работы с драйверами и всякими SetupAPI)
2) использовать утилиты типа devcon.exe (с ней тоже пока ничего не получается, даже просто установить драйвер пока не выходит)
3) подправить inf файл (думаю самый идеальный вариант, но даже не знаю как к этому вопросу подступиться)
4) использовать DIFx Tools (опять же незнаю насколько эти утилиты применимы к моей ситуации)
Re: помогите решить проблему с драйвером
От: Геннадий Майко США  
Дата: 06.03.06 14:07
Оценка:
Здравствуйте, aay, Вы писали:

aay>В общем ситуация такая. Есть компьютер (под windows 2000) в который устанавливается девайс (мультипортовая плата, стороннего поставщика) и естественно устанавливается драйвер. При установке драйвера устанавливаются ещё дополнительные у-ва (СОМ порты). Причём драйвера неподписанные. Вроде бы всё работает но есть одна загвоздка. Иногда возникает необходимость заменить установленный девайс на точно такой же. Новый девайс подключается вместо старого в тот же слот. Однако после замены винда почему-то не желает подхватывать имеющиеся в системе драйвера и предлагает установить их заново. Осложняется это всё ещё и тем что пользователь работает за компьютером под правами User и давать ему права администратора или Power User категорически нельзя (а без этого установить драйвер он не может). Можно ли как-нибудь переубедить винду чтобы она подхватывала уже имеющиеся в системе драйвера или на крайний случай автоматизировать этот процесс? Например дать пользователю пару программ в один щелчёк, чтобы первая запускалась перед заменой у-ва, а вторая после. Или может быть можно подправить дистрибутив с драйверами (может драйверописатели начудили что-то не так)?

aay>Пока я вижу несколько возможных путей, но не знаю приведут ли они к победе:
aay>1) Писать программы для установки и удаления драйверов. (нет достаточного опыта в области работы с драйверами и всякими SetupAPI)
aay>2) использовать утилиты типа devcon.exe (с ней тоже пока ничего не получается, даже просто установить драйвер пока не выходит)
aay>3) подправить inf файл (думаю самый идеальный вариант, но даже не знаю как к этому вопросу подступиться)
aay>4) использовать DIFx Tools (опять же незнаю насколько эти утилиты применимы к моей ситуации)
--
Похоже, что из-за того, что драйвера неподписаны, Windows считает установку драйверов как "client side" (см.здесь) и поэтому запускает Add Hardware wizard.
Можно попробовать написать программу установки драйвера (п.1 Вашего списка, примеры есть в devcon), однако многие функций SetupApiXXX требуют наличия прав администратора и поэтому я сомневаюсь, что в данном случае это поможет. Хотя можно попытаться временно в программе дать этому пользователю привелегию для установки драйверов (SeLoadDriverPrivilege)...

А почему просто нельзя решить эту проблему административно?
Получается, что с одной стороны, пользователю давать права администратора "категорически нельзя", а с другой — он может вскрывать машину и вставлять какие-то платы. Пусть этот процесс выполняет администратор и он же проведет установку/переустановку драйверов.

C уважением,
Геннадий Майко.
Re[2]: помогите решить проблему с драйвером
От: aay  
Дата: 06.03.06 14:39
Оценка:
Здравствуйте, Геннадий Майко, Вы писали:

ГМ>Похоже, что из-за того, что драйвера неподписаны, Windows считает установку драйверов как "client side" (см.здесь) и поэтому запускает Add Hardware wizard.

ГМ>Можно попробовать написать программу установки драйвера (п.1 Вашего списка, примеры есть в devcon), однако многие функций SetupApiXXX требуют наличия прав администратора и поэтому я сомневаюсь, что в данном случае это поможет. Хотя можно попытаться временно в программе дать этому пользователю привелегию для установки драйверов (SeLoadDriverPrivilege)...

К сожалению у меня пока нет DDK а на сайте microsoft исходников похоже нет.
Кстати а почему вариант с программой может не пройти? если пароль администратора зашить в неё, то думаю поднять ей привилегии не составит труда. Главное чтобы все процессы происходили автоматически. Чтобы пользователю надо было просто запустить прогу и всё.


ГМ>А почему просто нельзя решить эту проблему административно?

ГМ>Получается, что с одной стороны, пользователю давать права администратора "категорически нельзя", а с другой — он может вскрывать машину и вставлять какие-то платы. Пусть этот процесс выполняет администратор и он же проведет установку/переустановку драйверов.

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

А можно ли мою проблему решить при помощи DIFx Tools? Пока что мне этот вариант наиболее симпатичен, только я не совсем представляю как с этими утилитами работать
С уважением, Александр.
Re[3]: помогите решить проблему с драйвером
От: TarasCo  
Дата: 06.03.06 14:55
Оценка:
Здравствуйте, aay, Вы писали:

aay>Здравствуйте, Геннадий Майко, Вы писали:


ГМ>>Похоже, что из-за того, что драйвера неподписаны, Windows считает установку драйверов как "client side" (см.здесь) и поэтому запускает Add Hardware wizard.

ГМ>>Можно попробовать написать программу установки драйвера (п.1 Вашего списка, примеры есть в devcon), однако многие функций SetupApiXXX требуют наличия прав администратора и поэтому я сомневаюсь, что в данном случае это поможет. Хотя можно попытаться временно в программе дать этому пользователю привелегию для установки драйверов (SeLoadDriverPrivilege)...

aay>К сожалению у меня пока нет DDK а на сайте microsoft исходников похоже нет.

aay>Кстати а почему вариант с программой может не пройти? если пароль администратора зашить в неё, то думаю поднять ей привилегии не составит труда. Главное чтобы все процессы происходили автоматически. Чтобы пользователю надо было просто запустить прогу и всё.

Это КРАЙНЕ плохой стиль. Но немного модифицировав постановку задачи, можно сделать ее вполне приемлемой: при первой установке администратором устанавливается сервис, который наблюдает за появлением новых устройств и занимается установкой драйверов и др. задачами, требующими административных привилегий.
Да пребудет с тобою сила
Re[4]: помогите решить проблему с драйвером
От: aay  
Дата: 06.03.06 19:26
Оценка:
Здравствуйте, TarasCo, Вы писали:

TC>Это КРАЙНЕ плохой стиль. Но немного модифицировав постановку задачи, можно сделать ее вполне приемлемой: при первой установке администратором устанавливается сервис, который наблюдает за появлением новых устройств и занимается установкой драйверов и др. задачами, требующими административных привилегий.


Блин, а я как-то даже и не думал в таком направлении... Спасибо за идею. Надо будет обмозговать это.
Re[4]: помогите решить проблему с драйвером
От: Геннадий Майко США  
Дата: 07.03.06 04:48
Оценка:
Здравствуйте, TarasCo,

TC>Но немного модифицировав постановку задачи, можно сделать ее вполне приемлемой: при первой установке администратором устанавливается сервис, который наблюдает за появлением новых устройств и занимается установкой драйверов и др. задачами, требующими административных привилегий.

--
А как предполагется "наблюдать за появлением новых устройств"?
Если с помощью отслеживания сообщений DBT_XXX (например, DBT_DEVICEARRIVAL), то, насколько я знаю, они посылаются после того, как драйвер установлен и первоначальная проблема установки драйвера остается...

C уважением,
Геннадий Майко.
Re[3]: помогите решить проблему с драйвером
От: Геннадий Майко США  
Дата: 07.03.06 06:11
Оценка:
Здравствуйте, aay,

ГМ>>Похоже, что из-за того, что драйвера неподписаны, Windows считает установку драйверов как "client side" (см.здесь) и поэтому запускает Add Hardware wizard.

ГМ>>Можно попробовать написать программу установки драйвера (п.1 Вашего списка, примеры есть в devcon), однако многие функций SetupApiXXX требуют наличия прав администратора и поэтому я сомневаюсь, что в данном случае это поможет. Хотя можно попытаться временно в программе дать этому пользователю привелегию для установки драйверов (SeLoadDriverPrivilege)...

aay>К сожалению у меня пока нет DDK а на сайте microsoft исходников похоже нет.

aay>Кстати а почему вариант с программой может не пройти? если пароль администратора зашить в неё, то думаю поднять ей привилегии не составит труда. Главное чтобы все процессы происходили автоматически. Чтобы пользователю надо было просто запустить прогу и всё.
--
Последняя версия DDK входит в состав KMDF tools (можно скачать отсюда).


aay>А можно ли мою проблему решить при помощи DIFx Tools? Пока что мне этот вариант наиболее симпатичен, только я не совсем представляю как с этими утилитами работать

--
Версия DIFx 2.0 вроде как позволяет устанавливать неподписанные драйвера, так что, наверное, попробовать можно.

С уважением,
Геннадий Майко.
Re[4]: помогите решить проблему с драйвером
От: aay  
Дата: 07.03.06 07:22
Оценка:
Здравствуйте, Геннадий Майко, Вы писали:

ГМ>Версия DIFx 2.0 вроде как позволяет устанавливать неподписанные драйвера, так что, наверное, попробовать можно.


не могли бы вы хоть приблизительно описать последовательность операций для создания инсталляционного пакета из имеющегося набора драйверов?

с уважением, Александр.
Re[5]: помогите решить проблему с драйвером
От: Геннадий Майко США  
Дата: 07.03.06 07:41
Оценка:
Здравствуйте, aay,

ГМ>>Версия DIFx 2.0 вроде как позволяет устанавливать неподписанные драйвера, так что, наверное, попробовать можно.


aay>не могли бы вы хоть приблизительно описать последовательность операций для создания инсталляционного пакета из имеющегося набора драйверов?

--
Увы, не могу, ибо пока не было необходимости в его использовании.

Могу порекомендовать использовать DPInst.exe утилиту и почитать "Creating a DPInst Installation Package".

C уважением,
Геннадий Майко.
Re[6]: помогите решить проблему с драйвером
От: Геннадий Майко США  
Дата: 07.03.06 08:26
Оценка:
Здравствуйте,

ГМ>Могу порекомендовать использовать DPInst.exe утилиту и почитать "Creating a DPInst Installation Package".

--
Вдогонку — эта утилита по прежнему требует прав администратора при установке драйверов.

C уважением,
Геннадий Майко.
Re[5]: помогите решить проблему с драйвером
От: TarasCo  
Дата: 07.03.06 08:26
Оценка:
Здравствуйте, Геннадий Майко, Вы писали:

ГМ>А как предполагется "наблюдать за появлением новых устройств"?

ГМ>Если с помощью отслеживания сообщений DBT_XXX (например, DBT_DEVICEARRIVAL), то, насколько я знаю, они посылаются после того, как драйвер установлен и первоначальная проблема установки драйвера остается...

Да хоть вручную. Сервис — это метод избавиться от пароля администратора "зашитого" в программу.
Да пребудет с тобою сила
Re[6]: помогите решить проблему с драйвером
От: aay  
Дата: 07.03.06 09:08
Оценка:
большое спасибо за ссылку. Буду разбираться.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.