Member 12899279 Ответов: 1

Как получить exe - файл с датой и временем первого запуска?


я не могу придумать, как это сделать, у меня есть файл .cpp, из которого создается exe-файл, но мне нужно написать код в cpp, чтобы узнать самую первую дату и возможное время запуска этого exe-файла, и я не хочу получать дату и время каждый раз, когда этот exe-файл запускается
только дата и время первого запуска
возможно ли это вообще?

Что я уже пробовал:

я уже пробовал это сделать
#include"stdafx.h"
#include <stdio.h>
#include <windows.h>
#include<conio.h>

int main(int argc, char** argv)
{
	WIN32_FILE_ATTRIBUTE_DATA attr;
	SYSTEMTIME creation;

	if (argc < 2)
		return 1;
	GetFileAttributesEx(_T(argv[1]), GetFileExInfoStandard, &attr);
	FileTimeToSystemTime(&attr.ftLastWriteTime, &creation);
	printf("Created: %04d-%02d-%02d %02d:%02d:%02d\n"
		"Size: %d bytes\n",
		creation.wYear, creation.wMonth, creation.wDay,
		creation.wHour, creation.wMinute, creation.wSecond,
		attr.nFileSizeLow);
	_getch();
	return 0;
}

но я думаю, что это будет получить дату сборки, а не первое время trun exe-файла

1 Ответов

Рейтинг:
2

OriginalGriff

Либо добавьте поле в файл настроек (если оно у вас есть) по умолчанию пустым, либо добавьте файл в свое приложение.
Когда вы запускаете приложение, вы проверяете настройку или файл, и если он пуст или не существует, то это происходит в первый раз, поэтому получите текущую дату и время и сохраните их в настройках или файле.
Если это не так, то это первый запуск.


Member 12899279

у меня нет никакого файла настроек, как это сделать, чтобы помочь?
и Вы имеете в виду, что я должен создать файл при первом запуске exe-файла, а затем в следующий раз, если он будет запущен, я должен использовать простой if, чтобы проверить, есть ли в файле, который должен был быть создан в первый раз, какие-либо данные внутри него или нет?и если есть какие-то данные, то он должен вернуть дату, хранящуюся в этом файле(да, я буду хранить дату в этом файле), а если нет, то это означает, что exe запускается в первый раз, и он будет хранить дату в файле и показывать пользователю текущую дату и время?
но я не думаю, что это хороший способ..что делать, если пользователь случайно удалит этот текстовый файл?
нет ли какого-нибудь способа, с помощью которого он не создает дополнительный файл?

OriginalGriff

Если у вас нет файла настроек как части вашего приложения, то добавление его только для этого немного излишне (и как это сделать, будет зависеть от того, в какой среде вы работаете: например, MFC отличается от CLI).

Когда вы запускаете приложение, ищите конкретный файл в определенном месте: если он не существует, это первый раз, когда приложение запускается - поэтому создайте его и запишите в него текущую дату и время.

Вы ничего не можете сделать, чтобы помешать пользователю случайно или намеренно избавиться от этой информации, если только вы не можете получить доступ к онлайн-серверу: по крайней мере, установка вашего приложения в виртуальной машине будет означать, что каждый раз, когда он запускает его, это будет первый раз.

Если вы пытаетесь "защитить" свое программное обеспечение, ограничивая время пробной версии, то вам нужно будет получить гораздо более сложный: google для "защиты пробной версии приложения c++", и вы получите массу идей.

Но ... не тратьте на это слишком много времени: если ваше приложение популярно, оно будет украдено. Adobe тратит человеко-годы каждый раз, когда они выпускают новую версию, добавляя защиту от кражи, и обычно взломанная версия появляется в тот же день, когда выпускается новая версия. Очень, очень трудно остановить кражу, но очень легко подставить законного пользователя и разозлить целую кучу платящих клиентов - и они уйдут в другое место, если это произойдет.

Member 12899279

можем ли мы сделать это с cli?что я могу сделать это просто создать текстовый файл и записать в него дату и когда exe запустится снова он проверит этот файл если он существует он покажет эту дату в противном случае он создаст новый txt файл и сохранит дату в нем и отобразит ее
но что делать, если пользователь удаляет txt-файл или запускает exe-файл из другой папки
поэтому я ищу какой-то метод thts, встроенный в exe-файл в нем самом

Member 12899279

можем ли мы сделать это с cli?что я могу сделать это просто создать текстовый файл и записать в него дату и когда exe запустится снова он проверит этот файл если он существует он покажет эту дату в противном случае он создаст новый txt файл и сохранит дату в нем и отобразит ее
но что делать, если пользователь удаляет txt-файл или запускает exe-файл из другой папки
поэтому я ищу какой-то метод thts, встроенный в exe-файл в нем самом

OriginalGriff

Нет, не можешь.

Или, точнее, да, вы можете - с некоторым трудом, - но это поведение, которое ищут вирусные сканеры, поэтому ваше приложение при первом запуске будет посылать большие красные предупреждения от антивируса пользователя, и они наверняка не будут счастливы! (Или запустить его когда-нибудь снова).

И... установка его в виртуальную машину позволит обойти и это.