|
HKEY_LOCAL_MACHINE + AllUsers=FullControl либо как на ходу повысить права проги до админа?
|
|||
---|---|---|---|
#18+
Естественно раздел создается "администратором". Т.е. программа при инсталляции делает общий раздел HKEY_LOCAL_MACHINE\SOFTWARE\Company\Product и лепит туда атрибут Пользователи (Users) = Полный доступ Это чтоб любой пользователь компьютера мог туда писать (конкретно мне надо положить туда лицензионный ключ, чтоб это можно было сделать из под любого аккаунта и отовсюду виделся). Честно, я такой практики (Пользователи (Users) = Полный доступ) в HKEY_LOCAL_MACHINE не вижу. Но знаю что это сделать можно (ручками). По опыту: надоели претензии по типу я ввел ключ, перегрузил комп, а он пишет NOT REGISTERED (понятно если ключ лежит в HKCU). А повышать права с требованием пароля админа (да и не знаю как это сделать) - или выводить ошибку если прога не под админом - тоже не хочу. RegCreateKeyEx+SECURITY_ATTRIBUTES -? Примеры есть? Там структуры кажись не хилые. Ну или как произвести запись со стандартными атрибутами HKEY_LOCAL_MACHINE в тек. (не-админском) сеансе проги с повышением прав и вводом пароля админа? Второй вариант наверно красивше и правильней. Понижать права потом смысла нет, т.к. ввод лицензии по любому предполагает перезагрузку проги (прога ключи на ходу кушать все одно не умеет). ... |
|||
:
Нравится:
Не нравится:
|
|||
29.06.2013, 06:19 |
|
HKEY_LOCAL_MACHINE + AllUsers=FullControl либо как на ходу повысить права проги до админа?
|
|||
---|---|---|---|
#18+
Не доделал пока, но предварительные тесты положительные. Идея такая: Выясняем через API, под админом ли запущена прога. Если ДА, то в ней все и делаем. Если НЕТ, то через ShellExecuteEx запускаем наш же exe-шник под админом (это красиво выглядит, т.к. админа запрашивает как бы наш же exe шник), но запускаем с ключом proga.exe /key=1234567887778787 Делаем админ-версией чего надо и выходим, при этом возвращаем Exit Code true/false в неадминскую запущенную версию. Как-то так. По идее таким макаром можно сделать любое действо, требующее админа и при этом остаться на своих (неадминских) правах продолжая работать в том же экземпляре проги. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.06.2013, 11:18 |
|
HKEY_LOCAL_MACHINE + AllUsers=FullControl либо как на ходу повысить права проги до админа?
|
|||
---|---|---|---|
#18+
А что мешает хранить лицензионный ключ просто в текстовый файл Licence.txt (или .lcd или .lic ...) в папке C:\Programs\Имя программы\ в зашифрованном виде? Если юзер удалит файл или изменит его контент, то получит неработоспособную программу... ... |
|||
:
Нравится:
Не нравится:
|
|||
08.07.2013, 16:27 |
|
HKEY_LOCAL_MACHINE + AllUsers=FullControl либо как на ходу повысить права проги до админа?
|
|||
---|---|---|---|
#18+
Integrator2А что мешает хранить лицензионный ключ просто в текстовый файл Licence.txt (или .lcd или .lic ...) в папке C:\Programs\Имя программы\ в зашифрованном виде? Если юзер удалит файл или изменит его контент, то получит неработоспособную программу... Какая разница куда его класть: в Licence.txt или в реестр. >C:\Programs\Имя программы\ Ну, во-первых в эту папку имеет доступ только admin. Во вторых если юзер удалит, то неработоспособную программу получит не только он один. Поэтому правильно 1) видеть ключ должны ВСЕ 2) менять ключ должен иметь право только admin Логика с вызовом админа при вводе ключа правильная (где бы он ни был). При этом окно ввода ключа доступно и из юзер-запуска программы (с вводом пароля админа при вызове действия). И я все уже сделал как написал выше. В чем вопрос? ... |
|||
:
Нравится:
Не нравится:
|
|||
08.07.2013, 18:02 |
|
HKEY_LOCAL_MACHINE + AllUsers=FullControl либо как на ходу повысить права проги до админа?
|
|||
---|---|---|---|
#18+
Вопрос в том, как организовать эффективную модель защиты и правильное хранение лицензионного кода. HKEY_LOCAL_MACHINE - это трудная ветка, куда писать не так просто (проблемы с безопасностью). Не исключено, что в разных ОС правила игры могут меняться (разрешения на чтение/запись). Предложение - хранить код не в этой ветке, и не в реестре вообще, а в специальном файле или, как вариант, в базе данных, в какой-нибудь специальной настроечной таблице приложения. А лучше во многих местах сразу. Но всегда в зашифрованном виде. Удалять файл (или запись в БД) никто не будет, тк получается неработающая программа (за что, конечно, простой юзер получит по рукам). Да и вообще подобные злонамеренные сценарии я бы не рассматривал всерьез - и реестр юзер может "почистить" с помощью какой-нибудь специализированной программы (если есть доступ), и файл любой удалить может (если опять же есть доступ). ... |
|||
:
Нравится:
Не нравится:
|
|||
08.07.2013, 21:27 |
|
HKEY_LOCAL_MACHINE + AllUsers=FullControl либо как на ходу повысить права проги до админа?
|
|||
---|---|---|---|
#18+
Integrator2Вопрос в том, как организовать эффективную модель защиты...хранить код...в специальном файле... в базе данных...лучше во многих местах сразу....Но всегда в зашифрованном виде... Я не понимаю, ты предлагаешь защищать программу СВОИМИ средствами и пытаешься запутать хакеров храня ключ в нестандартном месте и "зашифровав" его? Если так, то эта защита будет взломана быстро. Если используешь специальные средства защиты (AsProtect например) то дополнительно "шифровать" ключ да еще засовывать его в нестандартные места мне кажется бредом. Если ключ уже есть, то секретом сам по себе равно как и место его хранения не является. Ты этот ключ случайно не придумаешь. Integrator2HKEY_LOCAL_MACHINE - это трудная ветка, куда писать не так просто (проблемы с безопасностью). Не исключено, что в разных ОС правила игры могут меняться (разрешения на чтение/запись).... HKEY_LOCAL_MACHINE - это как раз стандартное место которое 1) В режиме READ одинаково видят все 2) В режиме WRITE доступно только администратору. И других правил игры я вплоть до Win8 включительно не видел. Можно писать в HKEY_CURRENT_USER, но вопрос "Я лицензировал программу, перегрузился, а она не работает" (читай зашел под другим пользователем) поступит от кого-нибудь довольно быстро. Дальше, любую ветку реестра (включая HKEY_LOCAL_MACHINE ), любую папку (да ту же Program Files) можно сделать общедоступной (как READ так и WRITE). И я этим раньше очень злоупотреблял. Инсталлятору (запускается под Admin) под силу это сделать. Для полного доступа к папке всех и вся достаточно выполнить команду: Код: vbnet 1. 2.
Для реестра, то же самое, можно пойти в HKLM, выбрать там любую подветку и поменять параметры безопасности. Очевидно что API ф-ции реестра это тоже могут сделать из-под админа. И если ты внимательно читал мой первый топик, то мог понять что именно это я и хотел сделать. Но хватило мозгов все-таки так не сделать, а сделать нормально. Потому как злоупотребления разрешениями, равно как и приписывание exe-шникам флагов RunAsAdmin (неважно в манифесте или через галку в реестре) нарушает правильную природу виндов, чему в последних версиях начиная с Висты уделяется большое внимание и проще с этим потихоньку соглашаться нежели кричать "Отключи UAC, запускай из под админа" на все случаи жизни. К слову скажем, подавляющее большинство антивирусов тупо ругаются на файлы, где в манифесте прописан Admin (поэтому если уж злоупотреблять админом, то надо это делать через галки в реестре а не через манифест). ... |
|||
:
Нравится:
Не нравится:
|
|||
08.07.2013, 23:09 |
|
HKEY_LOCAL_MACHINE + AllUsers=FullControl либо как на ходу повысить права проги до админа?
|
|||
---|---|---|---|
#18+
Спасибо, Дмитрий77 за твою подробную консультацию и опыт. Хочется сказать пару "но": 1. Хранить регкод, являющийся своеобразным "произведением искусства" своей собственной защиты, лучше во многих местах, взломщики всех мест и их общее количество не знают, взломают только один (первый) уровень защиты. И, если защита многоуровневая, и последующие проверки включаются по истечении определенного случайного времени... то обмануть хакеров очень даже можно. 2. Покупал ли ты когда-нибудь платные .NET-компоненты? Часто присутствует файл License, в котором как раз инфа по лицензии содержится в зашифрованном виде. Заметь, не в реестре, а простой текстовый файл. И расшифровать его не представляется возможным. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.07.2013, 14:02 |
|
HKEY_LOCAL_MACHINE + AllUsers=FullControl либо как на ходу повысить права проги до админа?
|
|||
---|---|---|---|
#18+
Integrator2 Покупал ли ты когда-нибудь платные .NET-компоненты?Нет. Мне все-таки думается что мы о разных вещах говорим. Вопрос был 1) Как задать определенные права доступа для конкретной ветки реестра? либо 2) Как из программы, запущенной от имени USER выполнить операцию, на которую имеет право только ADMIN? Т.к. я успешно решил (2), то (1) я прорабатывать не стал. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.07.2013, 16:22 |
|
HKEY_LOCAL_MACHINE + AllUsers=FullControl либо как на ходу повысить права проги до админа?
|
|||
---|---|---|---|
#18+
Дмитрий77, выложи плз апи проверки, под админом ли запущена прога, и код запуска её от админа... моя прога "умирает" в случае ошибки и в предсмертном сообщении просит перезапустить её от админа ... |
|||
:
Нравится:
Не нравится:
|
|||
17.01.2014, 02:37 |
|
HKEY_LOCAL_MACHINE + AllUsers=FullControl либо как на ходу повысить права проги до админа?
|
|||
---|---|---|---|
#18+
А осилишь? Клеверпод админом ли запущена прога Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36.
Клевери код запуска её от админа... Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104.
res_CANCEL -означает что приложение не было запущено, т.е. пользователь не ввел пароль админа или ввел неверный res_OK и res_FAILED -соответствует кодам возврата приложения. То что в C++ пишется как return 0; return 1; VB6 всегда возвращает return 0; Но это можно изменить: Код: vbnet 1. 2. 3.
... |
|||
:
Нравится:
Не нравится:
|
|||
17.01.2014, 05:46 |
|
HKEY_LOCAL_MACHINE + AllUsers=FullControl либо как на ходу повысить права проги до админа?
|
|||
---|---|---|---|
#18+
Дмитрий77, буду разбираться, спасибо!) Код: vbnet 1.
порадовало))) ... |
|||
:
Нравится:
Не нравится:
|
|||
17.01.2014, 10:57 |
|
HKEY_LOCAL_MACHINE + AllUsers=FullControl либо как на ходу повысить права проги до админа?
|
|||
---|---|---|---|
#18+
Клевер Код: vbnet 1.
порадовало))) Убери, это чушь. Как и последние 3 строчки. Видимо осталось из какого-то примера, в кот. я глядел. Можешь по идее заменить Код: vbnet 1. 2. 3. 4. 5.
В моем случае я возвращаю результат админского экземпляра проги в неадминский и продолжаю работать в неадминском. Что надо тебе, я не знаю, думай сам и читай msdn. Я подгонял ф-цию под свои нужды. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.01.2014, 16:39 |
|
HKEY_LOCAL_MACHINE + AllUsers=FullControl либо как на ходу повысить права проги до админа?
|
|||
---|---|---|---|
#18+
решил проверить запуск от админа. создалось 1400 процессов, виртуальная машина сдохла, запустилась с 3 перезагрузки, комп пришлось "душить" вручную. грусть-печаль( не мог не заметить: я запускал прогу на виртуалке на винде XP. никаких прав не нужно. но код упорно выставлял своё окошко непонятно зачем ... |
|||
:
Нравится:
Не нравится:
|
|||
18.01.2014, 23:19 |
|
HKEY_LOCAL_MACHINE + AllUsers=FullControl либо как на ходу повысить права проги до админа?
|
|||
---|---|---|---|
#18+
Дмитрий77, сё, разобрался. всё работает идеально, большущее спасибо) ... |
|||
:
Нравится:
Не нравится:
|
|||
18.01.2014, 23:38 |
|
HKEY_LOCAL_MACHINE + AllUsers=FullControl либо как на ходу повысить права проги до админа?
|
|||
---|---|---|---|
#18+
из-за перезагрузки слетел весь код, что я писал последние несколько дней на виртуальной машине. придётся восстанавливать по памяти. эхь, программист - воплощение терпения ... |
|||
:
Нравится:
Не нравится:
|
|||
18.01.2014, 23:43 |
|
HKEY_LOCAL_MACHINE + AllUsers=FullControl либо как на ходу повысить права проги до админа?
|
|||
---|---|---|---|
#18+
Дмитрий77Т.е. программа при инсталляции делает общий раздел HKEY_LOCAL_MACHINE\SOFTWARE\Company\Product и лепит туда атрибут Пользователи (Users) = Полный доступ Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70.
... |
|||
:
Нравится:
Не нравится:
|
|||
08.04.2014, 05:39 |
|
HKEY_LOCAL_MACHINE + AllUsers=FullControl либо как на ходу повысить права проги до админа?
|
|||
---|---|---|---|
#18+
Вообще-то в ф-ции приведенной в посте 15427980 (где я жду код возврата от запущенного под админом процесса) правильнее использовать цикл с DoEvents. Тогда вызывающее приложение не вешается в отличии от WaitForSingleObject(INFINITE). Если допустим вызывающее приложение использует форму ну и к примеру на форме ничего нельзя нажимать пока выполняется администраторский процесс, правильнее поставить эту форму в Enabled=False, а не рассчитывать на WaitForSingleObject кот. коверкает на форме всю графику. Т.е. при useDoEvent=true код не вешает вызывающий исходный процесс и при этом получает сигнализацию об окончании выполнения вызванного админского процесса. Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55.
... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2014, 14:52 |
|
HKEY_LOCAL_MACHINE + AllUsers=FullControl либо как на ходу повысить права проги до админа?
|
|||
---|---|---|---|
#18+
Если ожидания завершения админского процесса не нужно, а скажем стоит задача "Всегда запускать эту программу только администратором", то код сильно упрощается. Сделал для себя такой вариант: Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45.
По сути это эквивалентно вистовскому манифесту с инструкцией level=requireAdministrator Но "requireAdministrator" -как показывает практика антивирус-недружественная инструкция (и не будет работать на XP). В манифесте лучше всегда использовать "AsInvoker". ... |
|||
:
Нравится:
Не нравится:
|
|||
29.05.2014, 12:33 |
|
|
start [/forum/topic.php?fid=60&msg=38324581&tid=2156349]: |
0ms |
get settings: |
14ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
35ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
48ms |
get tp. blocked users: |
1ms |
others: | 15ms |
total: | 144ms |
0 / 0 |