
15-09-2007, 09:52
|
 |
|
|
חבר מתאריך: 09.04.02
הודעות: 8,000
|
|
|
הורדת קובץ דרך HTTP בעזרת WinInet
אני כותב תוכנה שמורידה קובץ EXE מהאינטרנט ושומרת אותו בנתיב קבוע.
הקובץ שנשמר זהה במשקל לקובץ המקורי, אבל לא רץ כמו שצריך... נפתח לי חלון DOS עם הטקסט הבא:
קוד:
C:\>file.exe
Bad command or file name
This program cannot be run in DOS mode.
C:\>
זה הקוד שמוריד את הקובץ מהאינטרנט:
קוד PHP:
const char * REMOTE_FILE_URL = "http://localhost/uploads/sample.exe";
const int REMOTE_FILE_BUFFER_SIZE = 1024;
#include <windows.h>
#include <wininet.h>
int main(int argc, char * argv[])
{
HINTERNET WinInetRoot = InternetOpen("Crawler", INTERNET_OPEN_TYPE_DIRECT, NULL, NULL, 0);
HINTERNET WinInetUrl = InternetOpenUrl(WinInetRoot, REMOTE_FILE_URL, NULL, 0, 0, 0);
FILE * File = fopen("C:\\file.exe", "a");
char FileBuffer[REMOTE_FILE_BUFFER_SIZE];
DWORD BytesRead;
while (InternetReadFile(WinInetUrl, FileBuffer, REMOTE_FILE_BUFFER_SIZE, &BytesRead) == TRUE)
{
if (BytesRead == 0) break;
fwrite(FileBuffer, sizeof(char), BytesRead, File);
}
fclose(File);
InternetCloseHandle(WinInetUrl);
InternetCloseHandle(WinInetRoot);
return 0;
}
מישהו מבין מה הבעיה כאן? יכול להיות שאני פשוט לא שומר את המידע בטיפוס משתנה מתאים?
נערך לאחרונה ע"י דור בתאריך 15-09-2007 בשעה 09:54.
|