Вопрос Как реализовать запуск софта только один раз. Второй раз его можно запустить только после перезагрузки ПК?

Energy Reload
Забаненный
Статус
Оффлайн
Регистрация
20 Авг 2017
Сообщения
1,206
Реакции[?]
330
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Как реализовать запуск софта только один раз. Второй раз его можно запустить только после перезагрузки ПК?
Какие есть идеи?
 
Участник
Статус
Оффлайн
Регистрация
30 Авг 2020
Сообщения
777
Реакции[?]
245
Поинты[?]
10K
вместе с инжектом запускать процесс с рандом неймом, и если он открыт чит не будет инжектится. (нужно проверку сделать)
 
Забаненный
Статус
Оффлайн
Регистрация
28 Янв 2021
Сообщения
137
Реакции[?]
17
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
кароче, создаешь процесс ((абсолютно любой) в конце дллмейна(либо када там тебе нада)),и проверку на него в начале дллмейна, если открыт, то не инжектим
чтобы пользователь не смог закрыть программу достаточно отобрать у него права.
Банальное задание в планировщик которое будет запускать нужную программу в определенное время.
Прав у простого пользователя на редактирование заданий нет.
 
Energy Reload
Забаненный
Статус
Оффлайн
Регистрация
20 Авг 2017
Сообщения
1,206
Реакции[?]
330
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Олдфаг
Статус
Оффлайн
Регистрация
18 Фев 2019
Сообщения
2,826
Реакции[?]
1,853
Поинты[?]
24K
Как вариант, получать
Пожалуйста, авторизуйтесь для просмотра ссылки.
и сохранять это значение в реестр или AppData. Если новое значение timeGetTime больше старого, то компьютер был перезагружен
 
Energy Reload
Забаненный
Статус
Оффлайн
Регистрация
20 Авг 2017
Сообщения
1,206
Реакции[?]
330
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Как вариант, получать
Пожалуйста, авторизуйтесь для просмотра ссылки.
и сохранять это значение в реестр или AppData. Если новое значение timeGetTime больше старого, то компьютер был перезагружен
Тоже не совсем правильно. Баги будут с таймингами, через какое время запустили приложение. Через 5 минут или через 60 минут, а записанное будет как 15 минут.
 
Олдфаг
Статус
Оффлайн
Регистрация
18 Фев 2019
Сообщения
2,826
Реакции[?]
1,853
Поинты[?]
24K
Тоже не совсем правильно. Баги будут с таймингами, через какое время запустили приложение. Через 5 минут или через 60 минут, а записанное будет как 15 минут.
Немного не понял. Функция должна вернуть одинаковое значение, в случае отсутствия перезапуска пк
 
Energy Reload
Забаненный
Статус
Оффлайн
Регистрация
20 Авг 2017
Сообщения
1,206
Реакции[?]
330
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Немного не понял. Функция должна вернуть одинаковое значение, в случае отсутствия перезапуска пк
Округлим все до минут.
Через 10 минут после включения ПК, запишется 10 минут в реестр. Через 30 минут повторный запуск приложения и новый тайминг 30 минут.
Новый больше чем записанный - надо пк ребутнуть.

После ребута по истечении 15 минут запускаем приложение и опять новый тайминг больше чем записанный тайминг.
 
Олдфаг
Статус
Оффлайн
Регистрация
18 Фев 2019
Сообщения
2,826
Реакции[?]
1,853
Поинты[?]
24K
Округлим все до минут.
Через 10 минут после включения ПК, запишется 10 минут в реестр. Через 30 минут повторный запуск приложения и новый тайминг 30 минут.
Новый больше чем записанный - надо пк ребутнуть.

После ребута по истечении 15 минут запускаем приложение и опять новый тайминг больше чем записанный тайминг.
Согласен, поэтому вместо timeGetTime, мы должны сохранять разницу между текущем временем и временем с момента запуска винды. Сравнивать будем те же значения.
Гораздо проче, кстати, говоря это сделать через библиотеку chrono:
C++:
auto uptime = std::chrono::milliseconds(GetTickCount64());
auto boot_time = std::chrono::system_clock::now() - uptime;
 
Забаненный
Статус
Оффлайн
Регистрация
26 Мар 2021
Сообщения
24
Реакции[?]
6
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Согласен, поэтому вместо timeGetTime, мы должны сохранять разницу между текущем временем и временем с момента запуска винды. Сравнивать будем те же значения.
Гораздо проче, кстати, говоря это сделать через библиотеку chrono:
C++:
auto uptime = std::chrono::milliseconds(GetTickCount64());
auto boot_time = std::chrono::system_clock::now() - uptime;
та блять, а как boot_time преобразовать в тип, доступный для того же потока фстрима, чтоб писать в файл? для класса миллисекунд есть .count(), а с этим непонятном классом как?
в хроно есть только дуратион и тайм поинт каст и все, это все не то
 
Олдфаг
Статус
Оффлайн
Регистрация
18 Фев 2019
Сообщения
2,826
Реакции[?]
1,853
Поинты[?]
24K
та блять, а как boot_time преобразовать в тип, доступный для того же потока фстрима, чтоб писать в файл? для класса миллисекунд есть .count(), а с этим непонятном классом как?
в хроно есть только дуратион и тайм поинт каст и все, это все не то
Преобразовываем в миллисекунды и записываем, в чем проблема?
 
Забаненный
Статус
Оффлайн
Регистрация
26 Мар 2021
Сообщения
24
Реакции[?]
6
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Преобразовываем в миллисекунды и записываем, в чем проблема?
В том что преобразовать не получается, не через staic cast , не через chrono::duration cast, не через time_point_cast не могу преобразоватьСнимок экрана (137).png
 
Последнее редактирование:
Олдфаг
Статус
Оффлайн
Регистрация
18 Фев 2019
Сообщения
2,826
Реакции[?]
1,853
Поинты[?]
24K
В том что преобразовать не получается, не через staic cast , не через chrono::duration cast, не через time_point_cast не могу преобразоватьПосмотреть вложение 144075
C++:
#include <iostream>
#include <chrono>
#include <Windows.h>

using namespace std;

int main() {
    auto uptime = chrono::milliseconds(GetTickCount64());
    auto boot_time = std::chrono::duration_cast<chrono::milliseconds>(chrono::system_clock::now().time_since_epoch()) - uptime;
    cout << boot_time.count();
}
 
Забаненный
Статус
Оффлайн
Регистрация
26 Мар 2021
Сообщения
24
Реакции[?]
6
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
C++:
#include <iostream>
#include <chrono>
#include <Windows.h>

using namespace std;

int main() {
    auto uptime = chrono::milliseconds(GetTickCount64());
    auto boot_time = std::chrono::duration_cast<chrono::milliseconds>(chrono::system_clock::now().time_since_epoch()) - uptime;
    cout << boot_time.count();
}
Нужно было .time_since_epoch() добавлять, ну я про это и не знал, спасибо за помощь
 
Energy Reload
Забаненный
Статус
Оффлайн
Регистрация
20 Авг 2017
Сообщения
1,206
Реакции[?]
330
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Есть в реестре переменные, которые обновляются после рестарта винды.
Их изменения не несут вреда ОС.
Меняем эту переменную на то что нам надо, а после читаем и сверяем.
 
Keine panik!
Эксперт
Статус
Оффлайн
Регистрация
29 Апр 2020
Сообщения
812
Реакции[?]
417
Поинты[?]
49K
Меняем эту переменную
Имхо проще приложение привязать к серверу, чтобы ему для работы нужен был токен от него и реализовать всю логику ограничений на сервере.
Всякие реестры, файлы, и любые другие действия на пк юзера легко патчатся, даже при накрытой защите.
 
Energy Reload
Забаненный
Статус
Оффлайн
Регистрация
20 Авг 2017
Сообщения
1,206
Реакции[?]
330
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Имхо проще приложение привязать к серверу, чтобы ему для работы нужен был токен от него и реализовать всю логику ограничений на сервере.
Всякие реестры, файлы, и любые другие действия на пк юзера легко патчатся, даже при накрытой защите.
Ты не вкурил в суть эту.
Меня интересовало именно локально сделать.
 
Забаненный
Статус
Оффлайн
Регистрация
26 Мар 2021
Сообщения
24
Реакции[?]
6
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Есть в реестре переменные, которые обновляются после рестарта винды.
Их изменения не несут вреда ОС.
Меняем эту переменную на то что нам надо, а после читаем и сверяем.
а че за переменные то, не скажешь?)
 
Начинающий
Статус
Оффлайн
Регистрация
11 Июн 2020
Сообщения
114
Реакции[?]
20
Поинты[?]
0
Подгружать драйвер который не даст запустить 2 раз программу ....
 
Kot9k store
Пользователь
Статус
Оффлайн
Регистрация
2 Сен 2019
Сообщения
602
Реакции[?]
120
Поинты[?]
1K
Как то мне кажется вы с таймом перегнули, мне кажется можно провернуть через запуск какой проги(даже пустышки) например ставить проверку в начале кода что если файл пример.ехе закрыть - продолжить действие, если открыт то выход.
 
Сверху Снизу