|
40 / 3 / 1
Регистрация: 24.11.2012
Сообщений: 261
|
|
Есть ли какой-то способ определить самую последнюю по времени создания, запись в реестр?01.03.2020, 13:34. Показов 2356. Ответов 29
Метки нет (Все метки)
Понимаю, что в реестр пишется постоянно. Но мне не нужна точность до секунд и минут. Так-же понимаю, что у "добросовестных" юзеров, эта запись будет датирована текущим днем. Но есть такие "ребята", которые для запуска софта используют всякие манипуляции с датой и временем. Вот это и хочу проверить. То-есть если системное время будет меньше чем последнее обращение к реестру, то не давать софту запускаться.
0
|
|
| 01.03.2020, 13:34 | |
|
Ответы с готовыми решениями:
29
Нужно SQL-запросом вернуть самую последнюю добавленную запись
|
|
Модератор
|
||
| 01.03.2020, 14:44 | ||
|
Думайте о других способах защиты. Если нужна серьёзная защиты, то придётся прибегнуть к сторонним продуктам. Но от "серьёзных ребят" ни одна защита не поможет. Только аппаратная, где в USB сервере содержится существенная часть Бизнес Логики.
0
|
||
|
40 / 3 / 1
Регистрация: 24.11.2012
Сообщений: 261
|
|
| 01.03.2020, 14:50 [ТС] | |
|
Ну я же не об этом спрашивал. Про "ребят" написАл, чтобы было понятно, для чего мне это надо. А дальше я уже сам буду решать, что мне с этим делать.
0
|
|
|
Модератор
|
|
| 01.03.2020, 15:15 | |
|
Kuzya69, можно узнать последнее время любого изменения реестра (по данным файла), но не конкретного ключа.
Только если создать дополнительный ключ в не очевидной ветке для хранения этого времени.
0
|
|
|
Администратор
|
|
| 01.03.2020, 15:19 | |
|
Kuzya69, может лучше обратиться к NTP серверу, сравнить его время с системным и в случае большого расхождения не запускать программу?
0
|
|
|
40 / 3 / 1
Регистрация: 24.11.2012
Сообщений: 261
|
|
| 01.03.2020, 15:28 [ТС] | |
|
Элд Хасп, Не понял, а откуда-же тогда берется время создания , в программах работы с реестром? Например в "regedit", если экспортировать ветку с нужным ключем, в текстовый файл, то там конкретно дата и время указаны, типа:
"Последнее время записи: 21.03.2019 - 13:29". Мне не нужно время конкретного ключа, мне всего лишь нужно получить максимальную дату из всех значений дат реестра. Желательно без перечисления всех подряд веток реестра (или каким-нибудь быстрым перечислением веток). OwenGlendower, это уже сделано, но может возникнуть вариант подмены ответа от сервера. Да и интернет может быть отключен. Вобщем лучше "перебдеть", чем "недобдеть"
0
|
|
|
Модератор
|
|
| 01.03.2020, 16:07 | |
|
Kuzya69, Дата создания записи в реестре
0
|
|
|
40 / 3 / 1
Регистрация: 24.11.2012
Сообщений: 261
|
|
| 01.03.2020, 16:17 [ТС] | |
|
Элд Хасп, Видел я это. Как получать дату для отдельного ключа, я знаю. Меня механизм перечисления веток реестра интересует, на максимальную дату, какой-нибудь продвинутый. Чтобы быстро работал. Или может есть какой-то способ получить максимальную дату без перечисления? Например: в реестре есть какой-то ключ, в котором как раз и лежит максимальная и минимальная дата изменений. Просто про реестр ну очень мало информации, и апи с ним работающих. У меня гугл вообще мало чего информативного про даты ключей дает.
0
|
|
|
40 / 3 / 1
Регистрация: 24.11.2012
Сообщений: 261
|
|
| 01.03.2020, 17:14 [ТС] | |
|
Элд Хасп, Нет. Последняя дата чаще всего фиксируется в HKEY_LOCAL_MACHINE, но если в ручную перевести дату, то там уже будет эта новая дата. На корневые каталоги ориентироваться нельзя. Нужно именно перечислять.
Даже не представляю как перечислить всю эту "файлово-реестровую" систему, сколько времени на это уйдет. Интуиция мне подсказывает, что должен быть более легкий способ, но ничего подходящего пока в МСДН не нахожу. Может есть что-то из недокументированного, но боюсь нет-код будет глючить на каких нибудь ОС, из-за недокуметированного.
0
|
|
|
Модератор
|
|
| 01.03.2020, 17:29 | |
|
Kuzya69, насколько помню, при изменении ключа меняется раздел где он находится и в разделе фиксируется дата его изменения.
И вроде эта дата фиксируется по восходящей в родительских разделах. Больше дат никаких в реестре нет. Но очень давно с ним не работал. Может уже и забыл что-то.
0
|
|
|
40 / 3 / 1
Регистрация: 24.11.2012
Сообщений: 261
|
|
| 01.03.2020, 17:39 [ТС] | |
|
Нет не по восходящей. Переводишь системную дату на любую нисходящую. Начинаешь систему юзать, и в конце концов дата фиксируется этим нисходящим значением. Вот сижу вычисляю конкретные ключи, которые оперативно реагируют на изменение даты, а которые "долго эту дату держат". Может хоть какие-то подветки выделю, чтобы не всю корневую ветку перечислять.
Добавлено через 5 минут Пардон, кажется неправильно вас понял, но все равно. В ветках ключей реестра есть сегодняшняя дата, хотя я откатил системное время на вчерашнее. А корневая ветка HKEY_LOCAL_MACHINE у меня сейчас со вчерашней датой.
0
|
|
|
Модератор
|
||
| 01.03.2020, 17:43 | ||
|
А дата не "нисходящую", а более ранняя. Переставив системную дату назад и изменив реестр, то в изменённом разделе и по восходящей цепочке его родителей будет записана эта более ранняя дата. Для "отлова" такого изменения вам надо пройтись по всему реестру на полную глубину дерева для определения имеется ли раздел у которого время изменения позже чем у корневого раздела. Чего при нормальной работе быть не может. Это долго. Но можно сделать асинхронно. То есть приложение откроется, начнёт работать, а через минуту закончится проверка и работа завершится.
0
|
||
|
40 / 3 / 1
Регистрация: 24.11.2012
Сообщений: 261
|
||
| 01.03.2020, 17:50 [ТС] | ||
|
0
|
||
|
40 / 3 / 1
Регистрация: 24.11.2012
Сообщений: 261
|
|
| 07.03.2020, 01:54 [ТС] | |
|
Хотелось бы продолжить беседу.
Вобщем запустил поиск максимальных дат. Работает пока отлично. Среднее время поиска по всему реестру, на разных ОС, от 1 до 2-х минут. Пришлось отказаться от сплеш-заставки. А то даже меня раздражало. Запускаю поиск в backgroundWorker-потоке.Решил, для унификации алгоритма ввести и поиск минимальной даты, но тут оказалось, что в одной из моих ОС, есть дата 01.01.1601-3:00. Это немного вводит в заблуждение. Что это, глюк ОС, или битые кластеры жесткого диска? Если это ОС, то наводит на мысль, что такие "заоблачные" даты могут появиться и в максимальных датах. А тогда придется вводить какую-то фильтрацию таких сумасшедших дат. Ну и второй вопрос. Как можно снизить нагрузку на процессор backgroundWorker-потока? Пусть медленнее работает, для моих целей - не страшно. Зато не будет видно большой загрузки процессора (60-70%).
0
|
|
|
Модератор
|
|||||
| 07.03.2020, 11:34 | |||||
|
backgroundWorker считается сейчас устаревшим средством. И оставлен только для поддержки старых программ. Добавлено через 3 минуты Других причин в голову не приходит. Надо погуглить может есть и иные причины. Добавлено через 2 минуты Можно попробовать в асинхронных методах периодически кидать в await Sleep с небольшим значением. Добавлено через 9 минут Вам нужно найти первую дату большую чем системное время. Я думая в случае "кряка" она будет находится почти мгоновенно. Но для нормального реестра, конечно, всё равно будет обход всего реестра. Можно ограничить глубину обхода 1-2 ступенями. Мало вероятно что при "кряке" будут вноситься столь существенные изменения. Если же будут, то скорее всего их внесли и на всю глубину реестра.
0
|
|||||
|
40 / 3 / 1
Регистрация: 24.11.2012
Сообщений: 261
|
||||||
| 07.03.2020, 13:16 [ТС] | ||||||
|
0
|
||||||
|
Модератор
|
|||||||||||||
| 07.03.2020, 14:06 | |||||||||||||
|
Переключиться будет не просто.
Почему в какой-то момент OC так посчитала - не знаю. Надо проверить на разных компах. Возможно такая дата есть в реестре на всех компах. Добавлено через 2 минуты Можно в цикле вставить проверку какого-то объекта переданного извне. И изменяя во внешнем коде этот объект, можно будет отдавать какие-то команды в асинхронный метод. Добавлено через 4 минуты Добавлено через 6 минут При изменении вложенной ветки время фиксируется по все восходящей цепочке. И если было изменено системное время, а потом реестр, то это изменит время всех родительских узлов. В других же ветках время останется прежнее. Поэтому достаточно проверить верхний 1-2 уровня. Расхождения уже на таком уровне должны выявиться. Если, конечно, я правильно понимаю как работает реестр.
1
|
|||||||||||||
|
40 / 3 / 1
Регистрация: 24.11.2012
Сообщений: 261
|
|||
| 07.03.2020, 17:00 [ТС] | |||
|
За код благодарю. Буду разбираться.
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Wi ndows NT\CurrentVersion\Perflib\009 Так вот они с такой старой датой.
0
|
|||
|
1524 / 914 / 329
Регистрация: 17.05.2015
Сообщений: 3,438
|
|||
| 07.03.2020, 20:58 | |||
|
0
|
|||
| 07.03.2020, 20:58 | |
|
Помогаю со студенческими работами здесь
20
Какой способ создания двумерного массива корректен
Какой самый простой способ создания отчета для распечатки datagridview Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие.
Ссылка в Linux — это дополнительная запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая. . .
|
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ВВЕДЕНИЕ
Выполняя задание на управление насосной группой заполнения резервуара,. . .
|
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
|
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога
Финальные проекты на Си и на C++:
hello-sdl3-c. zip
hello-sdl3-cpp. zip
Результат:
|
|
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога
MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
|
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд.
Даже если у вас. . .
|
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает
монорепозиторий в котором находятся все исходники.
При создании нового решения, мы просто добавляем нужные проекты
и имеем. . .
|
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение:
В этой книге («Подход, основанный на вариантах использования») Ивар утверждает,
что архитектура программного обеспечения — это
структуры,. . .
|