好的,所以我一直在尝试做一些简单的事情,比如在Visual C ++中下载和传输文件,我一直在使用URLDownloadToFile()
函数。编译的代码,它没有给出任何错误,但它不会下载任何东西。显然,在我的代码无法工作的那一刻,我没有在这里跑过来,所以我做了一些调试等等,我将在一分钟内提到。这是代码。
#pragma comment(lib, "urlmon.lib")
#include <Windows.h>
#include <urlmon.h>
#include <stdio.h>
#include <tchar.h>
#include <string>
using namespace std;
void dwfile();
int main() {
dwfile();
return 0;
}
int dwfile() {
string url("http://0.0.0.0/putty.exe"); // I changed the IP for privacy
string file("C:\\Putty");
const char *strUrl = url.c_str();
const char *strFile = file.c_str(); // I had been testing with these, not currently using them
HRESULT hr = URLDownloadToFile(NULL, url.c_str(), file.c_str(), 0, NULL);
if (FAILED(hr)) {
printf("failed\n");
OutputDebugString("\n");
OutputDebugString("FAILED\n");
OutputDebugString("\n");
GetLastError();
system("pause");
}
}
请记住,我不是专业人士,而且我在C ++方面并不是很有经验。我读了几本书,但我现在处于较年轻的一面,而且我现在正在为此而努力。
至于调试,url
和file
在URlDownloadToFunction
中调用时会抛出错误,直到我.c_str()
并转换它们为止。我在函数调用中设置了一个断点,注意到变量hr的值为0xcccccccc,直到下一个断点,printf
语句,hr
的值为{{{ 1}}而没有别的。字符串似乎没有问题,但它没有告诉我任何其他内容。老实说我真的很难过。任何和所有的帮助都非常感激。
编辑
我觉得自己像个白痴,但我试图写入我的C:\驱动器的根目录,即使我忘了启用UAC。当我启用它时,它下载并运行Putty就好了,虽然我正在考虑从URLDownloadToFile()更改为使用WinInet。谢谢你的帮助!