IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB 6 et antérieur Discussion :

Suppression de fichier ou répertoire impossible avec EXE


Sujet :

VB 6 et antérieur

  1. #1
    Membre expert Avatar de OhMonBato
    Homme Profil pro
    Inscrit en
    Mars 2007
    Messages
    2 660
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2007
    Messages : 2 660
    Points : 3 685
    Points
    3 685
    Par défaut Suppression de fichier ou répertoire impossible avec EXE
    Bonjour,

    en mode édition sous VB6, j'ai dans mon programme des instructions pour effacer tous les fichiers d'un répertoire (Kill "*.*") ainsi qu'une instruction pour effacer un répertoire (RmDir MonRepertoire) et tout marche bien.

    Je compile, aucune erreur sur l'EXE mais les fichiers ne sont pas effacés, pas plus que mon répertoire d'ailleurs.
    J'avoue n'avoir aucune explication à ce phénomène, avez vous une idée ?

    Pour info, je suis sous Vista, il s'agit d'un sous répertoire dans "Mes documents" et je lance bien l'EXE en tant qu'administrateur.

  2. #2
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 040
    Points
    20 040
    Par défaut


    Comment défini tu "Mes documents" dans ton programme..? suivant que tu lance ton Exe en tant qu'administrateur ou pas , tu n'as pas le même répertoire "Mes documents" ton probléme ne viendrai t'il pas de la ?

  3. #3
    Membre expert Avatar de OhMonBato
    Homme Profil pro
    Inscrit en
    Mars 2007
    Messages
    2 660
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2007
    Messages : 2 660
    Points : 3 685
    Points
    3 685
    Par défaut
    Salut bbil, non ça ne vient pas de là, car je peux ajouter des fichiers par contre dans le répertoire de mon choix mais pour confirmation, voilà comment je définis le répertoire "mes documents" :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Dim WshShell As Object
    Set WshShell = CreateObject("WScript.Shell")
    MesDoc = WshShell.SpecialFolders("MyDocuments") & "\" & MonRepertoire
    En fait le but de mon programme est de lire un fichier zip et de le dézipper dans ce répertoire. Comme auparavant, ce répertoire peut contenir des fichiers obsolètes, je veux tout effacer avant le "dézipage", celui ci se passant sans aucun soucis, en mode VB6 ou en EXE.

    J'ai également testé mon exécutable sur un PC équipé de Windows XP, même problème.

  4. #4
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 040
    Points
    20 040
    Par défaut
    pour vérifier mon hypothèse , affiche ce répertoire dans un text box, je suis sous XP ici..mais selon queje lance mon Exe en Administrateur ou Pas mon répertoire "Mes documents" et modifié...

  5. #5
    Expert éminent sénior
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 117
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 117
    Points : 15 680
    Points
    15 680
    Par défaut
    Apres vérification, sous Vista, que ce soit run projet ou de l'exe, ce code fonctionne chez moi, avec 2 fichiers .txt dans le dossiers.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    Option Explicit
     
    Private Sub Form_Load()
    Dim folder
    Dim subfichiers
    Dim FSO
     
    Set FSO = CreateObject("Scripting.FileSystemObject")
    Set folder = FSO.GetFolder("C:\PersoFrancis\Dostests")
    'tous les fichiers dans "Dostests" seront detruits
    For Each subfichiers In folder.Files
     subfichiers.Delete
    Next
     
    End Sub
    J'ai fait sa vite fait en me basant sur un code que j'ai fournit hier dans une discussion, qui lui détruisait des dossiers.
    Je doit m'absenter un moment et ne pourrait pas suivre les événements avant au moins 2 heures.
    A+

  6. #6
    Membre expert Avatar de OhMonBato
    Homme Profil pro
    Inscrit en
    Mars 2007
    Messages
    2 660
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2007
    Messages : 2 660
    Points : 3 685
    Points
    3 685
    Par défaut
    Merci à vous 2 pour les suggestions, c'est à mon tour de ne pas pouvoir tester maintenant, mais dès demain je devrais pouvoir faire l'essai et je vous tiendrai au courant.

  7. #7
    Expert éminent sénior
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 117
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 117
    Points : 15 680
    Points
    15 680
    Par défaut
    Apres avoir relut les posts, je réalise que tu utilise le dossier MyDocuments
    , chez moi il s’appel Mes Documents, avec le code proposé dans mon message précédant, sa ne fonctionne pas, désolé.

  8. #8
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Points : 5 537
    Points
    5 537
    Par défaut
    Bonjour,

    Ce ne serait pas mieux d'utiliser le chemin retourné par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
     
    Private Type SHITEMID
        cb As Long
        abID As Byte
    End Type
    Private Type ITEMIDLIST
        mkid As SHITEMID
    End Type
    Private Declare Function SHGetSpecialFolderLocation Lib "shell32.dll" (ByVal hwndOwner As Long, ByVal nFolder As Long, pidl As ITEMIDLIST) As Long
    Private Declare Function SHGetPathFromIDList Lib "shell32.dll" Alias "SHGetPathFromIDListA" (ByVal pidl As Long, ByVal pszPath As String) As Long
    Private Sub Form_Load()
        MsgBox GetSpecialfolder(&H5)
    End Sub
    Private Function GetSpecialfolder(CSIDL As Long) As String
        Dim r As Long
        Dim IDL As ITEMIDLIST
        r = SHGetSpecialFolderLocation(100, CSIDL, IDL)
        If r = NOERROR Then
            Path$ = Space$(512)
            r = SHGetPathFromIDList(ByVal IDL.mkid.cb, ByVal Path$)
            GetSpecialfolder = Left$(Path, InStr(Path, Chr$(0)) - 1)
            Exit Function
        End If
        GetSpecialfolder = ""
    End Function
    ??

  9. #9
    Membre expert Avatar de OhMonBato
    Homme Profil pro
    Inscrit en
    Mars 2007
    Messages
    2 660
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2007
    Messages : 2 660
    Points : 3 685
    Points
    3 685
    Par défaut
    Voilà, problème résolu, merci à vous.

    Pour rappel, c'était juste entre le fait d'etre sous VB6 ou en mode compilé qui faisait que ça marchait ou pas. J'ai tout de même vérifié que le répertoire "Mes Documents" était bien le bon avec une message box et c'était bien le cas (Au passage le code suivant donne bien l'emplacement du répertoire "Mes documents" quelque soit son nom réel)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Dim WshShell As Object
    Set WshShell = CreateObject("WScript.Shell")
    MesDoc = WshShell.SpecialFolders("MyDocuments")
    C'est donc en utilisant FSO comme le suggérait ProgElect que j'ai résolu mon problème d'effacement de fichier récalcitrant. Merci encore !

  10. #10
    Expert éminent sénior
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 117
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 117
    Points : 15 680
    Points
    15 680
    Par défaut
    Salut
    Content que tu es trouvée la solution.
    Moi de mon coté, par jeux, j’ai essayé ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    Private Sub Command2_Click()
    Dim Chemin As String
    Dim FSO As Object
    Dim folder
    Dim subfichiers
     
    'Chemin = Environ("USERPROFILE") & "\Documents" '<== un chemin qui fonctionne
    Chemin = Environ("USERPROFILE") & "\Mes Documents" '<== problème
     Set FSO = CreateObject("Scripting.FileSystemObject")
     Set folder = FSO.GetFolder(Chemin)
     
    For Each subfichiers In folder.Files
     If MsgBox("Etes vous sûr de vouloir supprimer ce fichier :   " & subfichiers.Name, vbYesNo) = vbYes Then
      'remer durant le debug
      'subfichiers.Delete
     End If
     Exit For
    Next
    Set folder = Nothing
    Set FSO = Nothing
     
    End Sub
    Sa ne fonctionne pas, ligne For Each subfichiers In folder.Files, subfichiers est vide et folder.Files est en condition d' Erreur 70 Permission refusée.
    Sous Vista, les paramètres par défaut n’autorise pas l’ouverture pour un utilisateur même si il a le statut administrateur, pour cela il faut modifier les autorisations d’accès dans la fenêtre de propriétés du dossier, onglet Sécurité, je n’ai pas voulue allez plus loin n’ayant pas ce besoin à ce jour.

  11. #11
    Membre expert Avatar de OhMonBato
    Homme Profil pro
    Inscrit en
    Mars 2007
    Messages
    2 660
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2007
    Messages : 2 660
    Points : 3 685
    Points
    3 685
    Par défaut
    Là du coup je comprends pas parce que je suis sous Vista et ça marche impec, je peux effacer les fichiers, à moins qu'il y ait un détail dans ton code qui m'échappe.

  12. #12
    Expert éminent sénior
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 117
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 117
    Points : 15 680
    Points
    15 680
    Par défaut
    C'est bien pour sa que je me suis permis d'en rajouter sur une discussion taguer résolut.
    J'espère pour toi que quelque soit l'ordinateur ou sera utilisé le programme tout se passe bien, mais j'ai un doute, que je voulais partagé avec toi

  13. #13
    Rédacteur
    Avatar de DarkVader
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    2 130
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 130
    Points : 3 118
    Points
    3 118
    Par défaut
    Bonjour,
    Progelect, environ("userprofile") n'est pas obligatoirement le chemin de specialfolders("mydocuments") -
    c'est celui de Documents and Settings qui est le chemin d'installation par défaut de Mes documents
    (en principe sur le même lecteur que windows)
    mais les 2 racines ne sont pas obligées de se superposer par la suite selon les modifications de l'utilisateur.
    Personnellement, je ventile les répertoire différemment ; ayant un lecteur dédié, j'ai ainsi pour chemin «F:\Mes Documents»

    La clé de registre correspondante :
    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders => Personnal

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Suppression de fichier impossible avec unlink
    Par sachaaaz dans le forum Langage
    Réponses: 2
    Dernier message: 17/12/2012, 11h50
  2. [Batch] Comparer 2 répertoires avec suppression de fichiers
    Par cyborg12 dans le forum Scripts/Batch
    Réponses: 1
    Dernier message: 06/01/2012, 08h11
  3. Réponses: 7
    Dernier message: 16/12/2008, 13h22
  4. suppression de fichier impossible
    Par gdpasmini dans le forum C
    Réponses: 9
    Dernier message: 27/04/2006, 11h53
  5. suppression de fichier impossible (windows xp)
    Par annecyrond dans le forum Windows XP
    Réponses: 8
    Dernier message: 10/03/2005, 12h38

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo