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

Windows Forms Discussion :

Suppression définitive de fichiers


Sujet :

Windows Forms

  1. #1
    Membre à l'essai
    Inscrit en
    Novembre 2006
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 17
    Points : 17
    Points
    17
    Par défaut Suppression définitive de fichiers
    Bonjour à Tous,

    Comment supprimer définitivement des fichiers sur un disque de sorte à ne pas pouvoir les récuppérer même avec les utilitaires de restauration de fichiers.depuis vb.net.

    Merci d'avance.

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 749
    Points
    39 749
    Par défaut
    il faut réécrire par dessus...

    Un truc comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Using fs As New FileStream(cheminDuFichier, FileMode.Open, FileAccess.ReadWrite)
        Dim length as Long = fs.Length
        fs.SetLength(0)
        For i = 0 to Length - 1
            fs.WriteByte(0)
        End For
    End Using
    File.Delete(cheminDuFichier)
    On doit pouvoir améliorer les perfs en utilisant un buffer, mais tu vois l'idée...

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    81
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2009
    Messages : 81
    Points : 55
    Points
    55
    Par défaut
    Kill(MonFichier) ne suffit pas ?

    Ou alors en s'inspirant de la précédente idée de "réecrire dessus" :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     Dim Ecrire
     
     
            Ecrire = New StreamWriter(LeCheminDeTonFichier) 'Ouvre un fichier pour le lire
     
            Ecrire.WriteLine()' On écris une ligne qui effaçera toutes les autres, donc "formatera le fichier"
     
            Ecrire.Close()
     
    Kill(LeCheminDeTonFichier)' Tu le supprime le plus simplement du monde. Même si la personne le récupère, le fichier sera vide  car tu l'aura "formaté" avant ^^
    Voilà !

    Xavier

  4. #4
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 749
    Points
    39 749
    Par défaut
    Citation Envoyé par xav2303 Voir le message
    Kill(MonFichier) ne suffit pas ?
    Kill, c'est une fonction VB6 qui n'est encore présente en VB.NET que pour faciliter la migration... Il faut utiliser System.IO.File.Delete ou encore My.Computer.FileSystem.DeleteFile (spécifique à VB.NET)

    Citation Envoyé par xav2303 Voir le message
    Ecrire.WriteLine()' On écris une ligne qui effaçera toutes les autres, donc "formatera le fichier"
    non, c'est absolument faux... "une ligne qui effacera toutes les autres" ? Une nouvelle ligne, c'est juste 2 caractères ("\r\n" ou vbCrLf ou vbCr + vbLf), soit 2 octets... ça n'écrase pas du tout le reste du fichier

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    81
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2009
    Messages : 81
    Points : 55
    Points
    55
    Par défaut
    Citation Envoyé par tomlev Voir le message
    non, c'est absolument faux... "une ligne qui effacera toutes les autres" ? Une nouvelle ligne, c'est juste 2 caractères ("\r\n" ou vbCrLf ou vbCr + vbLf), soit 2 octets... ça n'écrase pas du tout le reste du fichier
    Oui bon je en même temps on peut se tromper ^^. Mais si tu as un fichier mettons le fichier "Coucou.txt" à la racine du disque C:, qui contient un texte "Bonjour au tous les membres du forum de developpez.net", si tu écris de la manière avec Variable.WriteLine("C:\Coucou.txt"), lorsque tu le ré-ouvre il n'y a plus rien dedans...

    Xavier

  6. #6
    Membre régulier
    Homme Profil pro
    Architecte technique
    Inscrit en
    Octobre 2008
    Messages
    83
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2008
    Messages : 83
    Points : 96
    Points
    96
    Par défaut
    c'est juste, mais faux à la fois.
    Il faudrait pouvoir "formater" n'importe quel fichier. Et là le plus dur reste de savoir quel sont les clusters du HDD utilisés pour ce fichier.
    Sinon y a la méthode bourin, écrire plusieurs fois un fichier sur l'éspace libre du hdd (aprés vidange de la corbeille et redémarrage) pour être sur d'avoir que des "bouts" lisiblent par un soft "pro" de récupération de données.
    cordialement @dn

  7. #7
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 749
    Points
    39 749
    Par défaut
    Citation Envoyé par xav2303 Voir le message
    Oui bon je en même temps on peut se tromper ^^.
    Absolument, je ne dis pas le contraire

    Citation Envoyé par xav2303 Voir le message
    Mais si tu as un fichier mettons le fichier "Coucou.txt" à la racine du disque C:, qui contient un texte "Bonjour au tous les membres du forum de developpez.net", si tu écris de la manière avec Variable.WriteLine("C:\Coucou.txt"), lorsque tu le ré-ouvre il n'y a plus rien dedans...
    Il n'y a apparemment plus rien dedans, du point de vue du système de fichier... mais les données non écrasées sont toujours présentes sur le disque, et un logiciel spécialisé peut les récupérer, ce que justement monmiez ne veut pas

  8. #8
    Membre chevronné Avatar de Danyel
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2005
    Messages
    1 682
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juillet 2005
    Messages : 1 682
    Points : 1 952
    Points
    1 952
    Par défaut
    Citation Envoyé par tomlev Voir le message
    Il n'y a apparemment plus rien dedans, du point de vue du système de fichier... mais les données non écrasées sont toujours présentes sur le disque, et un logiciel spécialisé peut les récupérer, ce que justement monmiez ne veut pas
    Je confirme les dires de tomlev, car il suffit que les adresses fat du fichier soit totalement differentes, et tout sera recuperable.
    En fait, pour être sûr que TOUTES les donnees soient ecrasees, il faudrait que les allocations soient exactement les memes et de meme longueur sur toute la longueur du fichier.
    Et encore, j'ai vu des softs (apres plusieurs phases et passes d'effacement) retrouver tout ou parties ...
    La seule solution pour eradiquer des datas sur un disque, c'est le formatage bas niveau (lol oui oui j'exagere )
    Que les neurones soient avec toi, jeune padawan.
    Ne pas oublier, qu'un métier, développer être.
    Effectuer des recherches et lire les tutos, avant de poster, tu dois.
    Aucune question technique, faites par MP, tu ne dois.

  9. #9
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 154
    Points : 25 072
    Points
    25 072
    Par défaut
    et comment on fait pour lancer un formatage de bas niveau depuis .net ?
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  10. #10
    Membre chevronné Avatar de Danyel
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2005
    Messages
    1 682
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juillet 2005
    Messages : 1 682
    Points : 1 952
    Points
    1 952
    Par défaut
    Citation Envoyé par Pol63 Voir le message
    et comment on fait pour lancer un formatage de bas niveau depuis .net ?
    En vb.net je doute que cela soit faisable
    Par contre en assembleur, je me souviens qu'il suffisait juste de faire un jmp vers une adresse (me souvient plus laquelle) et ca lancait un petit soft interne au dos et qui permettait de faire un formattage bas niveau sur n'importe quel disque dur de n'importe quelle marque (que de souvenirs )
    Que les neurones soient avec toi, jeune padawan.
    Ne pas oublier, qu'un métier, développer être.
    Effectuer des recherches et lire les tutos, avant de poster, tu dois.
    Aucune question technique, faites par MP, tu ne dois.

  11. #11
    Membre régulier
    Homme Profil pro
    Architecte technique
    Inscrit en
    Octobre 2008
    Messages
    83
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2008
    Messages : 83
    Points : 96
    Points
    96
    Par défaut
    Ou sinon il reste la bonne vieille méthode de l'aimant
    /plus là

  12. #12
    Expert éminent
    Avatar de smyley
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    6 270
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 6 270
    Points : 8 344
    Points
    8 344
    Par défaut
    <Théorie>
    Si on écrit un fichier c'est une chose.
    Si on fait fs.SetLength(0) AVANT d'écrire, on provoque la libération de l'espace alloué par le fichier et une nouvelle allocation pour l'écriture, byte par byte (ce qui est d'ailleurs d'une lenteur phénoménale) et donc aucune garantie d'avoir écraser quoique ce soit.
    Laisser le fichier avec la même taille mais écrire par dessus avec un buffer de 4 Ko par exemple (initialisé à n'importe quoi) PUIS de supprimer le fichier ou définir sa taille à zéro devrait résoudre le pb (car là on alloue rien, on écrit sur un espace déjà alloué).
    </Théorie>

Discussions similaires

  1. Réponses: 3
    Dernier message: 14/03/2009, 18h55
  2. Suppression définitive de Fichiers
    Par hic73 dans le forum Windows XP
    Réponses: 3
    Dernier message: 09/02/2009, 10h11
  3. Réponses: 8
    Dernier message: 14/11/2003, 22h51
  4. Réponses: 2
    Dernier message: 11/08/2003, 13h43
  5. [LG]suppression dans un fichier
    Par cedrick essale dans le forum Langage
    Réponses: 5
    Dernier message: 10/08/2003, 15h22

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