![]() |
Прежде чем задать вопрос, смотрите FAQ.
Рекомендуем загрузить DRKB.
![]() ![]() |
![]() |
Snake_B |
![]()
Сообщение
#1
|
Пионер ![]() ![]() Группа: Пользователи Сообщений: 72 Пол: Мужской Репутация: ![]() ![]() ![]() |
Такой вопрос... добавляю в программе пункт в контекстное меню папок... в раздел HKEY_CLASSES_ROOT...
всё как обычно используя Registry... но в Висте (и я так думаю в 7-ке тоже будет) доступ в тот раздел я получить не могу... там и под администратором его нет... можно это назначением привилегий обойти? или как по другому (только по проще бы)) |
vlads |
![]()
Сообщение
#2
|
Гость ![]() |
Не вижу смысла писать в данном случае в HKCR... Пиши в HKCU. Иначе с Win7 огребешь по полной "радостей жизни"...
|
Snake_B |
![]()
Сообщение
#3
|
Пионер ![]() ![]() Группа: Пользователи Сообщений: 72 Пол: Мужской Репутация: ![]() ![]() ![]() |
|
volvo |
![]()
Сообщение
#4
|
Гость ![]() |
Цитата но в Висте (и я так думаю в 7-ке тоже будет) доступ в тот раздел я получить не могу... там и под администратором его нет... Под root-администратором есть... Повышай привилегии для процесса, который будет писать в HKCR (повысить привилегии для текущего процесса ты не можешь, можешь только создать новый, который будет с админскими правами. Кстати, в Win7 при включенной UAC админских прав тоже будет недостаточно). Доп. информация - здесь: http://stackoverflow.com/questions/923350/...ion-when-needed , там же ссылки на соответствующую статью в MSDN.На самом деле установкой этих ключей в реестр должен заниматься инсталлятор, который запускается администратором, а не программа, которая работает из-под обычного пользователя. Но это по-хорошему, на самом деле ж никто так не пишет, правда? Вот и получаем теперь всякую ругань от системы, когда делаем так как привыкли... |
Snake_B |
![]()
Сообщение
#5
|
Пионер ![]() ![]() Группа: Пользователи Сообщений: 72 Пол: Мужской Репутация: ![]() ![]() ![]() |
Под root-администратором есть... Повышай привилегии для процесса, который будет писать в HKCR (повысить привилегии для текущего процесса ты не можешь, можешь только создать новый, который будет с админскими правами. Кстати, в Win7 при включенной UAC админских прав тоже будет недостаточно). Доп. информация - здесь: http://stackoverflow.com/questions/923350/...ion-when-needed , там же ссылки на соответствующую статью в MSDN. процесс в данном случае... это запускать другой ехе? потоки не подойдут же...? На самом деле установкой этих ключей в реестр должен заниматься инсталлятор, который запускается администратором, а не программа, которая работает из-под обычного пользователя. Но это по-хорошему, на самом деле ж никто так не пишет, правда? Вот и получаем теперь всякую ругань от системы, когда делаем так как привыкли... а вот тут я бы поспорил... 1. программа распостраняется в двух вариантах с инсталлятором и в архиве... в версии из архива инсталлятора в принципе нет... 2. почему я не могу дать пользователю возможность изменить какие то настройки в самой программе, а не в инсталляторе... те же ассоциации файлов (как в винампе).... изменение пунктов в контекстном меню (как в винраре, когда можно выбрать будет несколько пунктов, отдельное подменю или не будет вообще)... но конечно MS лучше знает как надо... и плюс антивирусы... есть у меня утилитка, для всех моих программ, проверяет наличие новых версий программ... просто проверяет наличие файла на сервере и скачивает его, если он есть (в нем информация о новой версии)... использую InternetReadFile... Avira ругается на эту утилиту... если строку с InternetReadFile закомментировать, то претензий нет... это блин у них такая эвристика что ле.... вот... накипело =) всех с новым годом, успехов, всё такое! ) |
volvo |
![]()
Сообщение
#6
|
Гость ![]() |
Цитата процесс в данном случае... это запускать другой ехе? потоки не подойдут же...? Нет, потоки не подойдут. Именно другой EXE.Цитата 2. почему я не могу дать пользователю возможность изменить какие то настройки в самой программе, а не в инсталляторе... те же ассоциации файлов (как в винампе).... изменение пунктов в контекстном меню (как в винраре, когда можно выбрать будет несколько пунктов, отдельное подменю или не будет вообще)... Дак а кто тебе запрещает-то? Меняй. Для текущего пользователя - меняй. Но почему ты решил, что твои, текущего пользователя, установки ТАК ВАЖНЫ ДЛЯ ВСЕХ ??? И что я, когда приду за ту же машину, и залогинюсь под другим аккаунтом, должен равно как и ты переться от того, что текстовый файл открывает твоя супер-программа, а не NotePad? Тебе это удобно? Мне - нет. HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts и вперед, для своего аккаунта делай все, что хочешь. Других пользователей не трожь.Понимаешь, да, откуда у всего этого ноги растут? Ты годами сидел на Win200/WinXP под админом, потому что у тебя автоматом создавался админский аккаунт, а менять что-либо и настраивать как положено у тебя не было ни желания ни умений. И работал ты один на машине, так? Менял себе (ибо админ, чего б не поменять), и это распространялось на всех (особенно, если ты был один на машине). Только вот почему-то 30% стороннего программного обеспечения я не мог запустить у себя под XP (под ограниченным аккаунтом), ибо этот лезет куда не надо, система его блокирует, тот пишет в корень диска, система его блокирует, третий пытается в папку дефолтного пользователя свою меганужную информацию запихать, что ему говорит система - сам догадаешься, или как? А теперь вдруг появилась необходимость сделать так, как положено (хотя положено так делать было "уже вчера") - и не умеем, да? Учись. И не надо переваливать все на MS... Она действительно лучше знает, как обезопасить одного пользователя от произвола второго... Еще раз повторяю: есть инсталлятор, и есть приложение, которое этот инсталлятор установил. Поскольку инсталлятор запускается с правами админа (если это не так - то программиста надо послать далеко и надолго), то он имеет доступ в HKCR, и может там добавить все то, что нужно для всех пользователей, либо только для одного, это уж как пользователь решит (обращал внимание на "Установить для всех пользователей"/"Только для текущего пользователя"? Вот как раз тот случай). Само приложение запускается конкретным пользователем. И имеет право менять настройки только для этого пользователя (а это - HKCU). Точка. Это - основы разграничения прав. Цитата Avira ругается на эту утилиту... если строку с InternetReadFile закомментировать, то претензий нет... это блин у них такая эвристика что ле.... Да, причем достаточно глупая. Чтобы Авира перестала вякать - достаточно сделать пару простейших вещей (здесь приводить не буду, но любой Гугл тебе выдаст рецепт). |
Snake_B |
![]()
Сообщение
#7
|
Пионер ![]() ![]() Группа: Пользователи Сообщений: 72 Пол: Мужской Репутация: ![]() ![]() ![]() |
Дак а кто тебе запрещает-то? Меняй. Для текущего пользователя - меняй. Но почему ты решил, что твои, текущего пользователя, установки ТАК ВАЖНЫ ДЛЯ ВСЕХ ??? И что я, когда приду за ту же машину, и залогинюсь под другим аккаунтом, должен равно как и ты переться от того, что текстовый файл открывает твоя супер-программа, а не NotePad? Тебе это удобно? Мне - нет. HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts и вперед, для своего аккаунта делай все, что хочешь. Других пользователей не трожь. о как... я не знал, что в другом месте можно... во втором посте спрашивал... тогда всё, впорос снят... так конечно на много лучше... спасибо =) Да, причем достаточно глупая. Чтобы Авира перестала вякать - достаточно сделать пару простейших вещей (здесь приводить не буду, но любой Гугл тебе выдаст рецепт). а в личку можно? я искал, но легкого способа не нашел... Добавлено через 15 мин. о как... я не знал, что в другом месте можно... во втором посте спрашивал... тогда всё, впорос снят... так конечно на много лучше... спасибо =) ХМ... не всё так просто... для файлов то туда можно записать... а вот для контекстного меню папок ни фига... запись делаю, а пункта не появляется... так что всё таки видимо прийдется делать ехе... п.с.. м-да... а нельзя как-нибудь сделать, чтобы не запрашивала подтверждение на запуск от имени админа? Сообщение отредактировано: Snake_B - 31.12.2010 18:04 |
volvo |
![]()
Сообщение
#8
|
Гость ![]() |
Цитата ХМ... не всё так просто... для файлов то туда можно записать... а вот для контекстного меню папок ни фига... запись делаю, а пункта не появляется... Для контекстного меню папок - это уже уровень администратора, это должен делать инсталлятор (ну, или EXE-шник с повышенными правами, если ты все-таки хочешь сделать по своему, наплевав на правильность. Пойми, плевать - это не совсем верно. Ведь в следующей версии ОС может быть запрещено, скажем, поднимать привилегии "левому процессу", и где тогда окажется твоя программа? Так что обманываешь ты себя в первую очередь, а не Windows). Конкретный пользователь не имеет такой привилегии - записывать что-то в меню папки, он может только выбрать, каким приложением открывать тот или иной тип файлов.Цитата а нельзя как-нибудь сделать, чтобы не запрашивала подтверждение на запуск от имени админа? Нет, и это есть хорошо, иначе любая программа будет тихо и незаметно запускаться под админом и творить все, что ей нужно. К какому лешему тогда нужен UAC? В Семерке, к примеру, под админом, ты даже RegEdit не запустишь без вопроса, а уверен ли ты, и действительно ли хочешь продолжить...Цитата а в личку можно? я искал, но легкого способа не нашел... Я не дома сейчас (все ссылки - на домашнем компьютере), попробую найти что-то, если найду - отпишусь... Если нет - значит, послезавтра, не раньше... |
Snake_B |
![]()
Сообщение
#9
|
Пионер ![]() ![]() Группа: Пользователи Сообщений: 72 Пол: Мужской Репутация: ![]() ![]() ![]() |
Нет, и это есть хорошо, иначе любая программа будет тихо и незаметно запускаться под админом и творить все, что ей нужно. К какому лешему тогда нужен UAC? В Семерке, к примеру, под админом, ты даже RegEdit не запустишь без вопроса, а уверен ли ты, и действительно ли хочешь продолжить... ну да... логично... Для контекстного меню папок - это уже уровень администратора, это должен делать инсталлятор (ну, или EXE-шник с повышенными правами, если ты все-таки хочешь сделать по своему, наплевав на правильность. Пойми, плевать - это не совсем верно. Ведь в следующей версии ОС может быть запрещено, скажем, поднимать привилегии "левому процессу", и где тогда окажется твоя программа? Так что обманываешь ты себя в первую очередь, а не Windows). Конкретный пользователь не имеет такой привилегии - записывать что-то в меню папки, он может только выбрать, каким приложением открывать тот или иной тип файлов. не знаю... почему было не разрешить менять меню каждому пользователю... самому себе то... а так... у меня программа в архиве 360 кб, а с инсталлятором она же 640.... оно то как бы с современными безлимитами вроде и не критично... но и принудительно заставлять пользователей качать версию в 2 раза больше только из-за пункта меню... сделал запуск программой самой себя с повышением привилегий... вторая копия записывает и выходит... |
Snake_B |
![]()
Сообщение
#10
|
Пионер ![]() ![]() Группа: Пользователи Сообщений: 72 Пол: Мужской Репутация: ![]() ![]() ![]() |
Цитата а в личку можно? я искал, но легкого способа не нашел... Я не дома сейчас (все ссылки - на домашнем компьютере), попробую найти что-то, если найду - отпишусь... Если нет - значит, послезавтра, не раньше... ни чего не нашел? п.с.... вроде разобрался... пробовал заменить InternetReadFile и InternetOpenUrl... на них ругались антивирусы... и сокеты пробовал и UrlDownloadToFile и динамический вызов dll с кодированием... количество срабатываний только росло... после добавление в uses "Messages, Variants, Classes, Graphics" (для увеличения размера ехе) и возврата к InternetReadFile и InternetOpenUrl срабатывать антивирусы перестали... видимо руководствуясь логикой, что трояны в 100 кб не бывают... то что в программке не бвло запуска других ехе и работы с реестром тоже их как то не смущало... Сообщение отредактировано: Snake_B - 7.01.2011 3:51 |
volvo |
![]()
Сообщение
#11
|
Гость ![]() |
Цитата ни чего не нашел? Нет. Просто передумал. Надоело что-то объяснять человеку, который все время говорит "и так сойдет". Сойдет - пользуйся... Я предпочитаю разговаривать с теми, кто пытается разобраться, почему нечто происходит, и как убрать причину, а не следствие... Да, это порой занимает больше времени, да, это может привести к переписыванию значительной части кода (а возможно и всего проекта), но в дальнейшем поддержка обойдется дешевле. И добавление новых фич не будет требовать все новых и новых костылей. Которые в один прекрасный момент рухнут, и этим все закончится... P.S. (Показать/Скрыть)
|
Snake_B |
![]()
Сообщение
#12
|
Пионер ![]() ![]() Группа: Пользователи Сообщений: 72 Пол: Мужской Репутация: ![]() ![]() ![]() |
Я предпочитаю разговаривать с теми, кто пытается разобраться, почему нечто происходит, и как убрать причину, а не следствие... причину я как бы и так знаю.... то что виндовс не разрешает добавлять пункты в меню папки для конкретного пользователя... и то что у авиры тупая эвристика... |
![]() ![]() |
![]() |
Текстовая версия | 23.07.2025 6:57 |