Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Системное программирование и WinAPI > Проблемы с реестром


Автор: ElcnU 2.5.2006, 16:22
Привет всем.

Проблема такая:
необходимо записать данные в
HKLM\SYSTEM\CurrentControlSet\Enum\
но доступ закрыт системой.
Может кто знает, как обойти данное ограничение прав? 

Автор: adonin 2.5.2006, 18:25
Попросить админа дать права на запись в соответствующий ключ реестра. 

Автор: ElcnU 3.5.2006, 07:38
СУПЕР!!!
какой, нахрен, админ???
Я хочу прописать данные о драйвере из инсталшилда,
а если бабушка за рулем компьютера, то она вообще не знает что такое реестр!!!
 

Автор: adonin 3.5.2006, 09:28
Цитата(ElcnU @  3.5.2006,  07:38 Найти цитируемый пост)
Я хочу прописать данные о драйвере из инсталшилда

Ну так проблема то в чём? Пропишите из инсталшилда ключи в реестр. Я думаю, ключи вы знаете, или нет?
Как я понял из:
Цитата(ElcnU @  2.5.2006,  16:22 Найти цитируемый пост)
но доступ закрыт системой.
Может кто знает, как обойти данное ограничение прав? 

Проблема состоит в том, что вам закрыт доступ к этому ключу. Поэтому запущенная от вашего имени программа не может в него писать. В таком случае - только к админу. Получение доступа иным способом - суть взлом системы, что не законно.
Возможно, Вы имели ввиду нечто другое, тогда сформулируйте более точно: в чём конкретно проблема? 

Автор: ElcnU 3.5.2006, 10:52
Мне просто надо установить автоматически драйвер любым способом 

Автор: _hunter 3.5.2006, 11:34
значит добавляеш в инсталяцию проверку на наличие у пользователя прав админа и в случае их отсутствия посылаеш пользователя к админу 

Автор: __Sergey__ 3.5.2006, 13:46
Может установить для своей проги дебагерские привилегии!? 

Автор: forker 3.5.2006, 14:02
Я думаю бабушке вряд ли приспичит установить какой-нить драйвер...
Создай какой-нить процесс с правами админа (или system), пусть грузится как сервис призагрузке Винды и выполняет все что надо (инсталяцию/деинсталяцию или просто по какому-нить запросу записывает в реестр то что нужно). А если все таки нужны какие-то действия пользователя то создай интерфейс управления.
И над безопасностью поработай. 

Автор: ElcnU 3.5.2006, 17:20
ну девайс у меня для кого угодно и для бабушек тоже...
типа лечит который (для глаз терапия).
и вполне возможно бабушке придется устанавливать ПО для него.
хочется без лишних заморочек SETUP.EXE, который в авторане на болванке, и ВСЁ. В сетапе и приложение и дрова ставиться должны.
А если бабушка окно установки оборудования, где лежит драйвер и т.д. то у неё сердечный приступ будет. МЕНЯ ЗАСУДЯТ, НАФИК, ЗА ТАКОЕ!!! 

Автор: __Sergey__ 3.5.2006, 17:35
Цитата(ElcnU @  3.5.2006,  17:20 Найти цитируемый пост)
В сетапе и приложение и дрова ставиться должны.

Не понятно, зачем инсталировать драйвер в сетапе. Чтобы он в системе резидентом висел ;)?
Запустит бабушка приложение, установится и драйвер. 

Автор: _hunter 3.5.2006, 17:44
Цитата(ElcnU @  3.5.2006,  17:20 Найти цитируемый пост)
ну девайс у меня для кого угодно и для бабушек тоже...
и вполне возможно бабушке придется устанавливать ПО для него.

у бабушки будет приступ от необходимости что-то устанавливать.
так-что это не проблема.
+ даже у бабушек из глазного кабинета есть админ. а если админа нет -- этот админ бабушка. и вопрос о получении прав локального админа тоже не стоит...
 

Автор: ElcnU 3.5.2006, 17:47
Цитата(__Sergey__ @ 3.5.2006,  17:35)
Цитата(ElcnU @  3.5.2006,  17:20 Найти цитируемый пост)
В сетапе и приложение и дрова ставиться должны.

Не понятно, зачем инсталировать драйвер в сетапе. Чтобы он в системе резидентом висел ;)?
Запустит бабушка приложение, установится и драйвер.

Когда новую видеокарту ит.п. ставишь, запускаешь SETUP.EXE и максимум заморочек - это перезагрузка. При этом если ты карту заменишь , а потом обратно вернешь то драйвера повторно ставить не придется . Я кочу сделать такую же установку. 

Автор: _hunter 3.5.2006, 18:02
делай.
не понятно, только, при чем тут права админа... 

Автор: adonin 4.5.2006, 09:31
ElcnU, Задание твоё давно всем понятно, объясни толком, в чём проблема то? не можешь в реестр прописать ключи? или не знаешь что и куда писать? или не знаешь как это сделать из конкретного InstallShield? или тебе закрыт доступ к ключам реестра? Установка драйвера заключается в прописывании информации о нём в реестр. Вот и всё. Проблем абсолютно ни каких не должно возникать.
Любой Setup обычно требует прав админа, чтобы всё без проблем прописать. Если ты запускаешь Setup в институте под учётной записью студента, то естественно, что тебе закрыт доступ к HKLM на запись. Уточни проблему!!! 

Автор: ElcnU 4.5.2006, 09:46
Цитата(_hunter @ 3.5.2006,  18:02)
делай.
не понятно, только, при чем тут права админа...

Просто один из способов поставить дривер -это самому все необходимые параметры прописать в реестр (см. выше), но нужны особые права...

Добавлено @ 09:54 
Цитата(adonin @ 4.5.2006,  09:31)
ElcnU, Задание твоё давно всем понятно, объясни толком, в чём проблема то? не можешь в реестр прописать ключи? или не знаешь что и куда писать? или не знаешь как это сделать из конкретного InstallShield? или тебе закрыт доступ к ключам реестра? Установка драйвера заключается в прописывании информации о нём в реестр. Вот и всё. Проблем абсолютно ни каких не должно возникать.
Любой Setup обычно требует прав админа, чтобы всё без проблем прописать. Если ты запускаешь Setup в институте под учётной записью студента, то естественно, что тебе закрыт доступ к HKLM на запись. Уточни проблему!!!

Проблема в том, что я не знаю как в инсталяшке софта произвети установку драйвера на мой девайс.
Что и куда в реестре прописывается я знаю, но драйвер шинный(USB девайс) и поэтому он прописывается в HKLM\system\currentcontrolset\enum... , но там системой закрыт доступ. и таким способом драйвера скорей всего не ставятся.
КАКИМ ОБРАЗОМ МНЕ ПРОИЗВЕСТИ АВТОМАТИЧЕСКУЮ УСТАНОВКУ ДРАЙВЕРА ИЗ ИНСТАЛШИЛДА??? 
ИЛИ КАКУЮ СОФТИНУ НЕОБХОДИМО НАПИСАТЬ ЧТОБ ЭТО СДЕЛАТЬ??? 

Автор: adonin 4.5.2006, 10:27
Посмотрел разрешения для этого ключа:
Enyone - read
System - full controll.
Поэтому приложение (даже с правами админа) не сможет в него ничего прописать. Нужно пользоваться сервисами системы. Можно, конечно, выставить себе разрешения на запись, но Вам не это нужно.
Надо где то вычитать, какому сервису передаётся inf файл и вызвать интерфейсы этого сервиса. Сейчас буду читать книжки разные. 

Автор: _hunter 4.5.2006, 10:29
Цитата(ElcnU @  4.5.2006,  09:46 Найти цитируемый пост)
Просто один из способов поставить дривер -это самому все необходимые параметры прописать в реестр (см. выше), но нужны особые права...

о получении особых прав я уже писал. (см. выше)
Цитата(ElcnU @  4.5.2006,  09:46 Найти цитируемый пост)
КАКИМ ОБРАЗОМ МНЕ ПРОИЗВЕСТИ АВТОМАТИЧЕСКУЮ УСТАНОВКУ ДРАЙВЕРА ИЗ ИНСТАЛШИЛДА??? 

в чем, конкретно, проблема? -- в написании кода "установки" или в отсутствии прав? 

Автор: adonin 4.5.2006, 10:41
Цитата(_hunter @  4.5.2006,  10:29 Найти цитируемый пост)
в чем, конкретно, проблема? -- в написании кода "установки" или в отсутствии прав? 

Читате предидущий пост.

Добавлено @ 10:45 
Управлением сервисами и драйверами в системе занимается Service Control Manager (SCM). Он управляет базой данных установленных сервисов и драйверов, обеспечивает единый способ контроля над ними, а также предоставляет API.
Дальше - идём в MSDN и читаем про SCM API. Подождите ещё минут десять, может быть, откопаю что нибудь.  

Автор: ElcnU 5.5.2006, 08:00
Цитата(adonin @ 4.5.2006,  10:27)
Посмотрел разрешения для этого ключа:
Enyone - read
System - full controll.
Поэтому приложение (даже с правами админа) не сможет в него ничего прописать. Нужно пользоваться сервисами системы. Можно, конечно, выставить себе разрешения на запись, но Вам не это нужно.
Надо где то вычитать, какому сервису передаётся inf файл и вызвать интерфейсы этого сервиса. Сейчас буду читать книжки разные.

да я в такие ограничения долго пялился...для меня была тупиковая ситуация 

Автор: ElcnU 5.5.2006, 08:20
Цитата(adonin @ 4.5.2006,  10:41)
Цитата(_hunter @  4.5.2006,  10:29 Найти цитируемый пост)
в чем, конкретно, проблема? -- в написании кода "установки" или в отсутствии прав? 

Читате предидущий пост.

Добавлено @ 10:45 
Управлением сервисами и драйверами в системе занимается Service Control Manager (SCM). Он управляет базой данных установленных сервисов и драйверов, обеспечивает единый способ контроля над ними, а также предоставляет API.
Дальше - идём в MSDN и читаем про SCM API. Подождите ещё минут десять, может быть, откопаю что нибудь.

тут я не совсем понял.
логика работы этих функций мне не совсем понятна.
Базу данных SCM я открыл, а дальше мне не совсем понятно как приатачить мой шинный драйвер к моему девайсу,который подключается через USB, я не понял. Ведь это надо делать API функциями из библиотеки где находится OpenSCManager.... smile  

Автор: adonin 5.5.2006, 09:24
Вчера у нас на ВЦ технические неполадки были, поэтому не смог ответить. 
Нашёл функцию: InstallHinfSection(). Она выполняет установку в соответствии с секциями inf файла, переданного в параметре. Лучше используйте её, тем более, что она обращается к SCM.
Смотрите:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/setupapi/setup/functions.asp
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/setupapi/setup/installhinfsection.asp 

Автор: ElcnU 5.5.2006, 10:50
Цитата(adonin @ 5.5.2006,  09:24)
Вчера у нас на ВЦ технические неполадки были, поэтому не смог ответить. 
Нашёл функцию: InstallHinfSection(). Она выполняет установку в соответствии с секциями inf файла, переданного в параметре. Лучше используйте её, тем более, что она обращается к SCM.
Смотрите:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/setupapi/setup/functions.asp
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/setupapi/setup/installhinfsection.asp

InstallHinfSection().  - не все inf секции понимает. Приходится инф править специально под неё.
И действя у нее и ей подобным = правой кнопкой по *.inf-установить или ShellExecute(NULL,"instal","myinf.inf",.....);
Или я чтото неправильно сделал... 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)