在“服务”程序中使用
UrlDownloadToFile(NULL, szDownFile, szLocalFile ,0, NULL)
下载文件,当第一次下载成功后,无论以后szDownFile是否存在,再次执行该函数,都会生成szLocalFile文件。但是在Win32 App程序不会有这个问题,为什么会这样?

解决方案 »

  1.   

    而且,在服务程序中,使用GetTempPath函数,返回的是C:\Windows\temp目录,
    而不是C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\
      

  2.   

    1 你可以把0改成对应的flag
    2 用户身份不一样
      

  3.   

    使用IBindStatusCallback,在OnProgress中自己检测文件是否已经存在。
      

  4.   

    >>1 你可以把0改成对应的flag
    HRESULT URLDownloadToFile(          LPUNKNOWN pCaller,
        LPCTSTR szURL,
        LPCTSTR szFileName,
        DWORD dwReserved,
        LPBINDSTATUSCALLBACK lpfnCB
    );dwReserved Reserved. Must be set to 0.指哪个参数?
    to DentistryDoctor: 
        检测网络上的文件吗?怎么检测?
      

  5.   

    但是同样的代码在Win32 App中执行就不会有问题。
      

  6.   

    搞定了,不使用UrlDownloadToFile,龍子龍孫 10:11:20
    #include<windows.h>
    #include<wininet.h>
    #pragma comment(linker,"/SUBSYSTEM:WINDOWS /ENTRY:Entry")
    #pragma comment(lib,"wininet.lib")
    #pragma comment(lib,"kernel32.lib")
    void Entry()
    {
    HINTERNET hSession=InternetOpen(NULL,INTERNET_OPEN_TYPE_PRECONFIG,NULL,NULL,0);
    HINTERNET hConnection=InternetOpenUrl(hSession,"http://www.google.com",NULL,0,0,0); BYTE Buffer[4096];
    DWORD Read=0,i;
    HANDLE hFile=CreateFile("c:\\index.htm",GENERIC_WRITE,0,NULL,CREATE_ALWAYS,0,NULL);
    InternetReadFile(hConnection,Buffer,sizeof(Buffer),&Read);
    while(Read!=0)
    {
    WriteFile(hFile,Buffer,Read,&i,NULL);
    InternetReadFile(hConnection,Buffer,sizeof(Buffer),&Read);
    }
    CloseHandle(hFile); InternetCloseHandle(hConnection);
    InternetCloseHandle(hSession);
    }