| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > 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 |
| СУПЕР!!! какой, нахрен, админ??? Я хочу прописать данные о драйвере из инсталшилда, а если бабушка за рулем компьютера, то она вообще не знает что такое реестр!!! |
| Автор: 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 |
Не понятно, зачем инсталировать драйвер в сетапе. Чтобы он в системе резидентом висел ;)? Запустит бабушка приложение, установится и драйвер. |
| Автор: _hunter 3.5.2006, 17:44 | ||
у бабушки будет приступ от необходимости что-то устанавливать. так-что это не проблема. + даже у бабушек из глазного кабинета есть админ. а если админа нет -- этот админ бабушка. и вопрос о получении прав локального админа тоже не стоит... |
| Автор: ElcnU 3.5.2006, 17:47 | ||
Когда новую видеокарту ит.п. ставишь, запускаешь 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 | ||||
Просто один из способов поставить дривер -это самому все необходимые параметры прописать в реестр (см. выше), но нужны особые права... Добавлено @ 09:54
Проблема в том, что я не знаю как в инсталяшке софта произвети установку драйвера на мой девайс. Что и куда в реестре прописывается я знаю, но драйвер шинный(USB девайс) и поэтому он прописывается в HKLM\system\currentcontrolset\enum... , но там системой закрыт доступ. и таким способом драйвера скорей всего не ставятся. КАКИМ ОБРАЗОМ МНЕ ПРОИЗВЕСТИ АВТОМАТИЧЕСКУЮ УСТАНОВКУ ДРАЙВЕРА ИЗ ИНСТАЛШИЛДА??? ИЛИ КАКУЮ СОФТИНУ НЕОБХОДИМО НАПИСАТЬ ЧТОБ ЭТО СДЕЛАТЬ??? |
| Автор: adonin 4.5.2006, 10:27 |
| Посмотрел разрешения для этого ключа: Enyone - read System - full controll. Поэтому приложение (даже с правами админа) не сможет в него ничего прописать. Нужно пользоваться сервисами системы. Можно, конечно, выставить себе разрешения на запись, но Вам не это нужно. Надо где то вычитать, какому сервису передаётся inf файл и вызвать интерфейсы этого сервиса. Сейчас буду читать книжки разные. |
| Автор: _hunter 4.5.2006, 10:29 | ||||
о получении особых прав я уже писал. (см. выше)
в чем, конкретно, проблема? -- в написании кода "установки" или в отсутствии прав? |
| Автор: adonin 4.5.2006, 10:41 | ||
Читате предидущий пост. Добавлено @ 10:45 Управлением сервисами и драйверами в системе занимается Service Control Manager (SCM). Он управляет базой данных установленных сервисов и драйверов, обеспечивает единый способ контроля над ними, а также предоставляет API. Дальше - идём в MSDN и читаем про SCM API. Подождите ещё минут десять, может быть, откопаю что нибудь. |
| Автор: ElcnU 5.5.2006, 08:00 | ||
да я в такие ограничения долго пялился...для меня была тупиковая ситуация |
| Автор: ElcnU 5.5.2006, 08:20 | ||||
тут я не совсем понял. логика работы этих функций мне не совсем понятна. Базу данных SCM я открыл, а дальше мне не совсем понятно как приатачить мой шинный драйвер к моему девайсу,который подключается через USB, я не понял. Ведь это надо делать API функциями из библиотеки где находится OpenSCManager.... |
| Автор: 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 | ||
InstallHinfSection(). - не все inf секции понимает. Приходится инф править специально под неё. И действя у нее и ей подобным = правой кнопкой по *.inf-установить или ShellExecute(NULL,"instal","myinf.inf",.....); Или я чтото неправильно сделал... |