Re,
Il s'agit d'un serveur FTP installé sur ta machine, sur laquelle tu exécutes ton script ?
Quel est la valeur que tu récupères dans $hConn ?
Quand parle d'admin, tu parles d'un compte admin ? Ton user (windows ?) avec lequel tu développes n'est pas membre du groupe Administrators local ?
- Je pense que tu devrais procéder par élimination.
- Prends toi un FTP distant (genre un gratuit chez free.fr.) et teste à distance, ça éliminera tes pb de droits.
- #requireAdmin peut être une piste.
- Es tu sur du mode passif ?
J'ai un script de connexion FTP opérationnel dans un coin, j'essaierai de t'en filer le contenu ce soir si je remets la main dessus.
Cdlt, Dimvar.
[EDIT] Voila ce que j'ai utilisé pour me connecter à mon FTP Chez Free.
$Open = _FTP_Open('MyFTP Control') $Conn = _FTP_Connect($Open, $FTPserver, $username, $pass); se connecte au ftp if @error Then MsgBox (0,$Titre,"Erreur sur fonction _FTP_Connect") Exit EndIf _FTP_DirSetCurrent ($Conn ,$FTPpath); se positionne dans le chemin du dossier If @error Then MsgBox (0,$Titre,"Erreur sur fonction _FTP_DirSetCurrent") Exit EndIf _FTP_ProgressUpload1
($Conn, $cmdline[1], $TimeStamp&$array[$array[0]]); depose le fichier If @error Then MsgBox (0,$Titre,"Erreur sur fonction _FTP_ProgressUpload") Exit EndIfFunc _FTP_ProgressUpload1
($l_FTPSession, $s_LocalFile, $s_RemoteFile, $FunctionToCall = "") If $__ghWinInet_FTP = -1 Then Return SetError(-2, 0, 0) Local $ai_InternetCloseHandle, $glen, $last, $x, $parts, $buffer, $ai_ftpwrite, $result, $out, $i, $ret Local $ai_ftpopenfile = DllCall($__ghWinInet_FTP, 'handle', 'FtpOpenFileW', 'handle', $l_FTPSession, 'wstr', $s_RemoteFile, 'dword', $GENERIC_WRITE, 'dword', $FTP_TRANSFER_TYPE_BINARY, 'dword_ptr', 0) If @error Or $ai_ftpopenfile[0] = 0 Then Return SetError(-3, _WinAPI_GetLastError(), 0) If $FunctionToCall = "" Then ProgressOn($Titre, "Envoi en cours, Veuillez patienter... " ,"","","",18) Local $fhandle = FileOpen($s_LocalFile, 16) $glen = FileGetSize($s_LocalFile) $last = Mod($glen, 100) $x = ($glen - $last) / 100 If $x = 0 Then $x = $last $parts = 1 ElseIf $last > 0 Then $parts = 101 Else $parts = 100 EndIf If $x < $last Then $buffer = DllStructCreate("byte[" & $last & "]") Else $buffer = DllStructCreate("byte[" & $x & "]") EndIf For $i = 1 To $parts Select Case $i = 101 And $last > 0 $x = $last EndSelect DllStructSetData($buffer, 1, FileRead($fhandle, $x)) $ai_ftpwrite = DllCall($__ghWinInet_FTP, 'bool', 'InternetWriteFile', 'handle', $ai_ftpopenfile[0], 'ptr', DllStructGetPtr($buffer), 'dword', $x, 'dword*', $out) If @error Or $ai_ftpwrite[0] = 0 Then Local $lasterror = _WinAPI_GetLastError() $ai_InternetCloseHandle = DllCall($__ghWinInet_FTP, 'bool', 'InternetCloseHandle', 'handle', $ai_ftpopenfile[0]) ; No need to test @error. FileClose($fhandle) Return SetError(-4, $lasterror, 0) EndIf If $FunctionToCall == "" Then ProgressSet($i) Else Select Case $parts = 1 $result = 100 Case $i = 101 $result = 100 Case Else $result = $i EndSelect $ret = Call($FunctionToCall, $result) If $ret <= 0 Then $ai_InternetCloseHandle = DllCall($__ghWinInet_FTP, 'bool', 'InternetCloseHandle', 'handle', $ai_ftpopenfile[0]) ; No need to test @error. DllCall($__ghWinInet_FTP, 'bool', 'FtpDeleteFileW', 'handle', $l_FTPSession, 'wstr', $s_RemoteFile) ; No need to test @error. FileClose($fhandle) Return SetError(-6, 0, $ret) EndIf EndiF Sleep(10) Next FileClose($fhandle) If $FunctionToCall = "" Then ProgressOff() $ai_InternetCloseHandle = DllCall($__ghWinInet_FTP, 'bool', 'InternetCloseHandle', 'handle', $ai_ftpopenfile[0]) ; No need to test @error. If @error Or $ai_InternetCloseHandle[0] = 0 Then Return SetError(-5, 0, 0) Return 1EndFunc ;==>_FTP_ProgressUpload