Подпишитесь на наш Telegram-канал, чтобы всегда быть в курсе важных обновлений! Перейти

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

Energy Reload
Забаненный
Забаненный
Статус
Оффлайн
Регистрация
20 Авг 2017
Сообщения
1,206
Реакции
330
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Как реализовать запуск софта только один раз. Второй раз его можно запустить только после перезагрузки ПК?
Какие есть идеи?
 
вместе с инжектом запускать процесс с рандом неймом, и если он открыт чит не будет инжектится. (нужно проверку сделать)
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
кароче, создаешь процесс ((абсолютно любой) в конце дллмейна(либо када там тебе нада)),и проверку на него в начале дллмейна, если открыт, то не инжектим
чтобы пользователь не смог закрыть программу достаточно отобрать у него права.
Банальное задание в планировщик которое будет запускать нужную программу в определенное время.
Прав у простого пользователя на редактирование заданий нет.
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Как вариант, получать
Пожалуйста, авторизуйтесь для просмотра ссылки.
и сохранять это значение в реестр или AppData. Если новое значение timeGetTime больше старого, то компьютер был перезагружен
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Как вариант, получать
Пожалуйста, авторизуйтесь для просмотра ссылки.
и сохранять это значение в реестр или AppData. Если новое значение timeGetTime больше старого, то компьютер был перезагружен
Тоже не совсем правильно. Баги будут с таймингами, через какое время запустили приложение. Через 5 минут или через 60 минут, а записанное будет как 15 минут.
 
Тоже не совсем правильно. Баги будут с таймингами, через какое время запустили приложение. Через 5 минут или через 60 минут, а записанное будет как 15 минут.
Немного не понял. Функция должна вернуть одинаковое значение, в случае отсутствия перезапуска пк
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Немного не понял. Функция должна вернуть одинаковое значение, в случае отсутствия перезапуска пк
Округлим все до минут.
Через 10 минут после включения ПК, запишется 10 минут в реестр. Через 30 минут повторный запуск приложения и новый тайминг 30 минут.
Новый больше чем записанный - надо пк ребутнуть.

После ребута по истечении 15 минут запускаем приложение и опять новый тайминг больше чем записанный тайминг.
 
Округлим все до минут.
Через 10 минут после включения ПК, запишется 10 минут в реестр. Через 30 минут повторный запуск приложения и новый тайминг 30 минут.
Новый больше чем записанный - надо пк ребутнуть.

После ребута по истечении 15 минут запускаем приложение и опять новый тайминг больше чем записанный тайминг.
Согласен, поэтому вместо timeGetTime, мы должны сохранять разницу между текущем временем и временем с момента запуска винды. Сравнивать будем те же значения.
Гораздо проче, кстати, говоря это сделать через библиотеку chrono:
C++:
Expand Collapse Copy
auto uptime = std::chrono::milliseconds(GetTickCount64());
auto boot_time = std::chrono::system_clock::now() - uptime;
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Согласен, поэтому вместо timeGetTime, мы должны сохранять разницу между текущем временем и временем с момента запуска винды. Сравнивать будем те же значения.
Гораздо проче, кстати, говоря это сделать через библиотеку chrono:
C++:
Expand Collapse Copy
auto uptime = std::chrono::milliseconds(GetTickCount64());
auto boot_time = std::chrono::system_clock::now() - uptime;
та блять, а как boot_time преобразовать в тип, доступный для того же потока фстрима, чтоб писать в файл? для класса миллисекунд есть .count(), а с этим непонятном классом как?
в хроно есть только дуратион и тайм поинт каст и все, это все не то
 
та блять, а как boot_time преобразовать в тип, доступный для того же потока фстрима, чтоб писать в файл? для класса миллисекунд есть .count(), а с этим непонятном классом как?
в хроно есть только дуратион и тайм поинт каст и все, это все не то
Преобразовываем в миллисекунды и записываем, в чем проблема?
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Преобразовываем в миллисекунды и записываем, в чем проблема?
В том что преобразовать не получается, не через staic cast , не через chrono::duration cast, не через time_point_cast не могу преобразовать
Снимок экрана (137).png
 
Последнее редактирование:
В том что преобразовать не получается, не через staic cast , не через chrono::duration cast, не через time_point_cast не могу преобразоватьПосмотреть вложение 144075
C++:
Expand Collapse Copy
#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();
}
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
C++:
Expand Collapse Copy
#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() добавлять, ну я про это и не знал, спасибо за помощь
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Есть в реестре переменные, которые обновляются после рестарта винды.
Их изменения не несут вреда ОС.
Меняем эту переменную на то что нам надо, а после читаем и сверяем.
 
Меняем эту переменную
Имхо проще приложение привязать к серверу, чтобы ему для работы нужен был токен от него и реализовать всю логику ограничений на сервере.
Всякие реестры, файлы, и любые другие действия на пк юзера легко патчатся, даже при накрытой защите.
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Имхо проще приложение привязать к серверу, чтобы ему для работы нужен был токен от него и реализовать всю логику ограничений на сервере.
Всякие реестры, файлы, и любые другие действия на пк юзера легко патчатся, даже при накрытой защите.
Ты не вкурил в суть эту.
Меня интересовало именно локально сделать.
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Есть в реестре переменные, которые обновляются после рестарта винды.
Их изменения не несут вреда ОС.
Меняем эту переменную на то что нам надо, а после читаем и сверяем.
а че за переменные то, не скажешь?)
 
Как то мне кажется вы с таймом перегнули, мне кажется можно провернуть через запуск какой проги(даже пустышки) например ставить проверку в начале кода что если файл пример.ехе закрыть - продолжить действие, если открыт то выход.
 
Назад
Сверху Снизу