Не удается подключиться к FTP-серверу с помощью «win inet .dll» в VBA, но можно подключиться с WinSCP - PullRequest
1 голос
/ 14 апреля 2020

Я использую приведенный ниже фрагмент кода для подключения к серверу, используя wininet.dll в VBA, но не могу подключиться к нему. Но когда я пытаюсь подключиться к серверу с помощью WinSCP 5.15.1, он может подключиться. И когда я пытаюсь использовать версию 5.5.5.0 WinSCP, она показывает ошибку «Не удалось согласовать алгоритм обмена ключами» . Он также показывает ошибку входа в систему, когда я пытаюсь подключить его с помощью команды ftp в cmd.

Мне интересно, можно ли подключиться к серверу, используя wininet.dll в VBA, исправив любую вещь?

Public Function checkFTPpath(ByVal ServerName, ByVal Username, ByVal password, ByVal remote_path) As Boolean

  Dim hostFile As String
  Dim INet As Long
  Dim INetConn As Long
  Dim RetVal As Long
  Dim Success As Boolean

  Success = False
  RetVal = False
  INet = InternetOpen("MyFTP Control", 1&, vbNullString, vbNullString, 0&)
  If INet > 0 Then
    INetConn = InternetConnect(INet, ServerName, 21, Username, password, 1&, 0&, 0&)
      If INetConn > 0 Then
          Success = FtpSetCurrentDirectory(INetConn, "/")
          Success = FtpSetCurrentDirectory(INetConn, remote_path)
        RetVal = InternetCloseHandle(INetConn)
      End If
      RetVal = InternetCloseHandle(INet)
  End If
  checkFTPpath = Success

End Function

1 Ответ

2 голосов
/ 14 апреля 2020

Если вы получаете «Не удалось согласовать алгоритм обмена ключами» в WinSCP, это означает, что вы используете протокол SFTP, а не FTP. Win inet говорит только по FTP, а не по SFTP.

Вам придется использовать библиотеку SFTP. См. Загрузка SFTP в VBA .

...