DELPHI怎样实现登陆局域网的某台电脑(有管理员用户名和密码),然后将指定程序拷贝过去
用映射网络驱动器的方式我会做,我现在想直接用程序代码实现登陆和拷贝
哪位仁兄如果能为我实现的代码,我将仅剩的50分全部奉上

解决方案 »

  1.   

    /*===============================文件传输======================================================   
              功能:把指定的文件传输到指定IP地址的计算机。   
      参数:strIP   :   目的计算机的IP地址。   
                  uPort   :   端口号。   
          chSrc   :   文件路径及名称。   
          bSend   :   文件不存在时是否建立一个新文件。   
              返回值:   
      =============================================================================================*/   
      BOOL   CopyFileClient(CString   strIP,   UINT   uPort,   char   *chSrc,   BOOL   bSend)   
      {   
      BOOL   bRet   =   FALSE;   
      CSocket   sckClient;   
      CFile   file;   
      do   
      {   
      if(bSend)   
      {   
      bRet   =   file.Open(chSrc,   CFile::modeRead);   
      }   
      else   
      {   
      bRet   =   file.Open(chSrc,   CFile::modeCreate   |   CFile::modeWrite);   
      }   
      if(!bRet)   
      {   
      break   ;   
      }   
      bRet   =   sckClient.Create();   
      if(!bRet)   
      {   
      break   ;   
      }   
      bRet   =   sckClient.Connect(strIP,   uPort);   
      if(!bRet)   
      {   
      break   ;   
      }   
      BYTE   *chFileData   =   new   BYTE[   1024   +   1   ];   
      char   chData[10];   
      int   nSize   =   0;   
      if(bSend)   
      {   
      nSize   =   file.GetLength();   
      int   nRead   =   nSize;   
      ZeroMemory(chData,   10);   
      memcpy(chData,   &nSize,   sizeof(int));   
      int   nRet   =   sckClient.Send(chData,   sizeof(int));   
      if(nRet   <=   0)   
      {   
      bRet   =   FALSE;   
      break   ;   
      }   
      while(nRead   >   0)   
      {   
      int   n1   =   min(nRead,   1024);   
      int   n2   =   file.Read(chFileData,   n1);   
      nRead   -=   n2;   
      nRet   =   sckClient.Send(chFileData,   n2);   
      if(nRet   <=   0)   
      {   
      bRet   =   FALSE;   
      break   ;   
      }   
        
      bRet   =   TRUE;   
      }   
      }   
      else   
      {   
      char   chData[10];   
      ZeroMemory(chData,   10);   
      nSize   =   0;   
      int   nRet   =   sckClient.Receive(chData,   10);//读文件大小   
      if(nRet   <=   0)   
      {   
      bRet   =   FALSE;   
      break   ;   
      }   
      nSize   =   *((int*)(chData));   
      if(nSize   <=   0)   
      {   
      bRet   =   FALSE;   
      break   ;   
      }   
      BYTE   *chFileData   =   new   BYTE[1024+1];   
      int   nWrite   =   0;   
      while(nWrite   <   nSize)   
      {   
      nRet   =   sckClient.Receive(chFileData,   1024);   
      if(nRet   <=   0)   
      {   
      bRet   =   FALSE;   
      break   ;   
      }   
      file.Write(chFileData,   nRet);   
      nWrite   +=   nRet;   
      bRet   =   TRUE;   
      }   
      }   
      delete   []chFileData;   
      if(!bRet)   //   送文件数据出错.   
      {   
      break   ;   
      }   
      }while(0);   
      if(sckClient.m_hSocket   != INVALID_SOCKET)   
      {   
      sckClient.Close();   
      }   
      if(file.m_hFile   !=   CFile::hFileNull)   
      {   
      file.Close();   
      }   
        
      return   bRet;   
      }   
      /*===============================文件接收======================================================   
              功能:把接收的数据保存到指定的文件中。   
      参数:uPort   :   端口号。   
          chSrc   :   文件路径及名称。   
          bSend   :   文件不存在时是否建立一个新文件。   
              返回值:   
      =============================================================================================*/   
        
      BOOL   CopyFileServer(UINT   uPort,   char   *chDes,   BOOL   bSend)   
      {   
      BOOL   bRet   =   FALSE;   
      CFile   file;   
      CSocket   sckServer;   
      CSocket   sckClient;   
      do   
      {   
      if(!bSend)   
      {   
      bRet   =   file.Open(chDes,   CFile::modeCreate   |   CFile::modeWrite);   
      }   
      else   
      {   
      bRet   =   file.Open(chDes,   CFile::modeRead);   
      }   
      if(!bRet)   
      {   
      break   ;   
      }   
      bRet   =   sckServer.Create(uPort);   
      if(!bRet)   
      {   
      break   ;   
      }   
      bRet   =   sckServer.Listen();   
      if(!bRet)   
      {   
      break   ;   
      }   
      bRet   =   sckServer.Accept(sckClient);   
      if(!bRet)   
      {   
      break   ;   
      }   
      char   chData[10];   
      BYTE   *chFileData   =   new   BYTE[1024+1];   
      int   nSize   =   0;   
      if(!bSend)   
      {   
      ZeroMemory(chData,   10);   
      int   nRet   =   sckClient.Receive(chData,   10);//读文件大小   
      if(nRet   <=   0)   
      {   
      bRet   =   FALSE;   
      break   ;   
      }   
      nSize   =   *((int*)(chData));   
      if(nSize   <=   0)   
      {   
      bRet   =   FALSE;   
      break   ;   
      }   
      int   nWrite   =   0;   
      while(nWrite   <   nSize)   
      {   
      nRet   =   sckClient.Receive(chFileData,   1024);   
      if(nRet   <=   0)   
      {   
      bRet   =   FALSE;   
      break   ;   
      }   
      file.Write(chFileData,   nRet);   
      nWrite   +=   nRet;   
        
      bRet   =   TRUE;   
      }   
      }   
      else   
      {   
      nSize   =   file.GetLength();   
      int   nRead   =   nSize;   
      ZeroMemory(chData,   10);   
      memcpy(chData,   &nSize,   sizeof(int));   
      int   nRet   =   sckClient.Send(chData,   sizeof(int));   
      if(nRet   <=   0)   
      {   
      bRet   =   FALSE;   
      break   ;   
      }   
      while(nRead   >   0)   
      {   
      int   n1   =   min(nRead,   1024);   
      int   n2   =   file.Read(chFileData,   n1);   
      nRead   -=   n2;   
      nRet   =   sckClient.Send(chFileData,   n2);   
      if(nRet   <=   0)   
      {   
      bRet   =   FALSE;   
      break   ;   
      }   
        
      bRet   =   TRUE;   
      }   
      }   
      delete   []chFileData;   
      }while(0);   
      if(sckClient.m_hSocket   !=   INVALID_SOCKET)   
      {   
      sckClient.Close();   
      }   
      if(sckServer.m_hSocket   !=   INVALID_SOCKET)   
      {   
      sckServer.Close();   
      }   
      if(file.m_hFile   !=   CFile::hFileNull)   
      {   
      file.Close();   
      }   
        
      return   bRet;   
      }   
      

  2.   

    1、用winexec调用命令:net use \\IP地址\IPC$ 密码 /user:用户名
    2、用WnetAddConnection2,TNetResource参数:lpLocalName为空,lpRemoteName为net use \\IP地址\IPC$
      

  3.   

    大头鸟
    用WnetAddConnection2,TNetResource参数:lpLocalName为空,lpRemoteName为net   use   \\IP地址\IPC$
    能具体说说吗?
    用winexec调用命令:net   use   \\IP地址\IPC$   密码   /user:用户名  我会 但我不想这样子benke520的方案就不用了,我是要实现单方向,不是服务器客户端模式