现在小弟遇到这么一个问题:   在自己电脑(ip为192.168.100.23)有个程序每隔1小时会在D:\source目录下自动生成一个目录(目录名为当前整点时间,如2004090815),同时在该目录下会生成一些文件。我现在要做的是编一个小程序,实现每当上述目录和文件生成时,把它们拷贝到ip为192.168.100.27的电脑上,存放在D:\dest(既拷贝后为D:\dest\source),请问大虾们怎么实现?
   我用CopyFile试了一下,结果在同一台电脑上可以,拷贝到别的电脑上就不行了,
是否需要用到tcp/ip协议,或者直接将文件夹拷贝过去。
   请问实现这个功能会不会涉及到全县即自己和对方电脑用户名和密码的问题。
怎么检测文件生成了没有?
  大家有什么好办法请告诉我,最好能写几行程序或者给我一些参考的程序,谢谢!!  [email protected]

解决方案 »

  1.   

    如果用网络如TCP,或UDP什么的,FTP都是速度不快的,但是,你如果把这个目录映射成本机的一个驱动器,那么就COPYFILE了
      

  2.   

    char  cServer[128],cUser[32];
    strcpy(cServer,"\\\\");
    strcat(cServer,m_szServer);
    strcpy(cUser,m_szUser);
    NETRESOURCE   netResource;
    memset(&netResource,0,sizeof(netResource));
    netResource.dwType = 0;//RESOURCETYPE_ANY;
    netResource.dwScope = 2;
    netResource.dwUsage = 2;
    netResource.dwDisplayType = 2;
    netResource.lpLocalName = "";
    netResource.lpRemoteName = cServer;
    netResource.lpProvider = "";
    Retry:
    DWORD  result = WNetAddConnection2(&netResource,m_szPassword,m_szUser,0);
    if(result == WN_SUCCESS)
    {
    //判断是否登陆机器server与登陆用户是否属于Administrator组
    if(!isAdminUser(cServer,cUser))
    {
    char tmp[64];
    sprintf(tmp,"登陆用户【%s】权限太小,请用Administrators组用户登陆【%s】",cUser,cServer);
    AfxMessageBox(tmp,MB_ICONSTOP);
    return;
    }
    AddLogin(m_szServer);
    m_bConnected = true;
    CDialog::OnOK();
    return;
    }
    你可以每次跨网络拷贝的时候,先用上面的方法打通与另一台机器的连接
    然后,你就可以用CopyFile了,
    "D:\\source", "\\192.168.0.27\\D$\\dest\\source"
      

  3.   

    如何在应用程序中映射网络驱动器
    大连开发区捷通电脑技术有限公司
    王淼
    ---- 我们知道在WINDOWS的平台上可以实现网络驱动器的映射,但在应用程序中如何映
    射呢?以下的这个小程序就是演示如何在用户的应用程序中映射网络驱动器。在这里主
    要用到了WINDOWS的两个API函数WNetAddConnection2(建立网络驱动器的映射)和
    WNetCancelConnection2(取消网络驱动器的映射)以及一个NETRESOURCE结构(用来设
    置网络资源)。
    ---- 为了节省篇幅,我在这里只列出本演示程序的主要部分OnMountButton (为建立
    网络驱动器的映射)和OnUnmountButton(为取消网络驱动器的映射)。其中在下面的
    出现m_NetpathEdit 和m_DriveEdit 为用VC++定义的CEdit控键。分别接收输入的网络
    路径和要建立的本地的驱动器盘符。它们都放置在一个对话框中,如下图所示(略)
    ---- 建立网络驱动器的映射。
    void CMountDlg::OnMountButton()
    // TODO: Add your control notification
    handler code here
    char netpath[MAX_PATH]; //输入的网络路径
    m_NetpathEdit.GetWindowText(netpath, sizeof(netpath));
    char drv[MAX_PATH]; //本地的驱动器盘符
    m_DriveEdit.GetWindowText(drv, sizeof(drv));
    NETRESOURCE netres;
    netres.dwScope=RESOURCE_GLOBALNET;
    netres.dwType=RESOURCETYPE_ANY;
    netres.dwDisplayType=RESOURCEDISPLAYTYPE_GENERIC;
    netres.dwUsage=RESOURCEUSAGE_CONNECTABLE;
    netres.lpLocalName=drv;
    netres.lpRemoteName=netpath;
    netres.lpComment=NULL;
    netres.lpProvider=NULL;
    DWORD rslt=WNetAddConnection2(&netres, NULL, NULL, 0);
    CString str;
    str.Format("WNetAddConnection2()
    return code=%d", rslt);
    MessageBox(str);
    取消网络驱动器的映射
    void CMountDlg::OnUnmountButton()
    // TODO: Add your control notification handler
    code here
    char drv[MAX_PATH]; //本地的驱动器盘符
    m_DriveEdit.GetWindowText(drv, sizeof(drv));
    DWORD rslt=WNetCancelConnection2(drv, 0, FALSE);
    CString str;
    str.Format("WNetCancelConnection2() return code=%d",
    rslt);
    MessageBox(str);
    //显示信息成功与否 return code =0 成功 否则 建立失败
    ---- 本程序在VC++6.0及windows95/98/nt下编译通过。注意在程序的编译连接中加入
    mpr.lib,我们用两个API函数在这个库中。
      

  4.   


    请问这两个函数isAdminUser,AddLogin怎么编译不过去,提示说没有定义,MSDN上也查不到,为什么?