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.NET Discussion :

VB.NET Erreur Fichier utiliser par un autre processus [Débutant]


Sujet :

VB.NET

  1. #1
    Membre confirmé
    Homme Profil pro
    Téléconseiller
    Inscrit en
    Juin 2010
    Messages
    119
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Téléconseiller
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Juin 2010
    Messages : 119
    Par défaut VB.NET Erreur Fichier utiliser par un autre processus
    Bonjour,

    je me retrouve coincé depuis quelque jours sur une erreur que je n'arrive pas à résoudre :

    1/ J'enregistre une liste de joueurs avec les ID et MDP dans des fichiers distinct.

    2/ Je crypte les fichiers à l'aide d'une clé défini au préalable.

    lorsque je décrypte les fichiers avec la bonne clé de décryptage tout se passe comme voulu mais lorsque je rentre volontairement une mauvaise clé je rencontre une erreur : "Le fichier est utiliser par un autre processus" au moment de la tentative de suppressions des fichiers ...

    ci-joint le
    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
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
     
     
    Public Class Form1
     
        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            Decrypt()
            Try
     'L ERREUR SURVIENS ICI
                'verifie l existance fichier et l efface
                If IO.File.Exists("C:\CnC\login" & TextBoxJoueur.Text & "Encrypted.txt") Then
                    IO.File.Delete("C:\CnC\login" & TextBoxJoueur.Text & "Encrypted.txt")
                End If
     
                'verifie l existance fichier et l efface
                If IO.File.Exists("C:\CnC\pass" & TextBoxJoueur.Text & "Encrypted.txt") Then
                    IO.File.Delete("C:\CnC\pass" & TextBoxJoueur.Text & "Encrypted.txt")
                End If
            Catch ex As Exception
                MsgBox("Erreur :" & ex.Message, MsgBoxStyle.Critical, "Z!T¤ùN£ @NT!C!P-W!N-32")
            End Try
     
        End Sub
    End Class
     
    Imports System
    Imports System.IO
    Imports System.Security
    Imports System.Security.Cryptography
    Imports System.Text
     
    Module ModuleDecrypt
        'Doit correspondre à 64 bits, 8 octets.
        Dim sSecretKey As String = Form1.TextBox1.Text
     
        Sub Decrypt()
     
            DecryptFile("C:\CnC\login" & Form1.TextBoxJoueur.Text & "Encrypted.txt", _
        "C:\CnC\login" & Form1.TextBoxJoueur.Text & ".txt", _
        sSecretKey)
            DecryptFile("C:\CnC\pass" & Form1.TextBoxJoueur.Text & "Encrypted.txt", _
            "C:\CnC\pass" & Form1.TextBoxJoueur.Text & ".txt", _
            sSecretKey)
        End Sub
     
        Sub DecryptFile(ByVal sInputFilename As String, _
           ByVal sOutputFilename As String, _
           ByVal sKey As String)
     
            Try
     
                Dim DES As New DESCryptoServiceProvider()
                'Une clé de 64 bits et un vecteur d'initialisation sont requis pour ce fournisseur.
                'Définit la clé secrète pour l'algorithme DES.
                DES.Key() = ASCIIEncoding.ASCII.GetBytes(sKey)
                'Définit le vecteur d'initialisation.
                DES.IV = ASCIIEncoding.ASCII.GetBytes(sKey)
     
                'crée un flux de fichier pour lire le fichier crypté de retour
                Dim fsread As New FileStream(sInputFilename, FileMode.Open, FileAccess.Read)
                'crée un décrypteur DES à partir de l'instance DES
                Dim desdecrypt As ICryptoTransform = DES.CreateDecryptor()
                'crée un flux de cryptage, défini pour lire et effectuer une transformation
                'de décryptage DES sur les octets entrants
                Dim cryptostreamDecr As New CryptoStream(fsread, desdecrypt, CryptoStreamMode.Read)
                'imprime le contenu du fichier décrypté
                Dim fsDecrypted As New StreamWriter(sOutputFilename)
                fsDecrypted.Write(New StreamReader(cryptostreamDecr).ReadToEnd)
                fsDecrypted.Flush()
                fsDecrypted.Close()
                fsread.Close()
     
            Catch ex As Exception
                MsgBox("Erreur :" & ex.Message, MsgBoxStyle.Critical, "Z!T¤ùN£ @NT!C!P-W!N-32")
            End Try
     
        End Sub
     
    End Module
    restant a disposition pour plus de renseignement si nécessaire et vous remerciant si possible d'éclairer ma lanterne

  2. #2
    Membre Expert
    Avatar de wallace1
    Homme Profil pro
    Administrateur systèmes
    Inscrit en
    Octobre 2008
    Messages
    1 966
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Administrateur systèmes
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 966
    Billets dans le blog
    7
    Par défaut
    Bonjour,

    Dans ta Sub Decrypt :

    - Il faut déclarer tes instances : FileStream, Streamwriter et Streamreader en dehors de ton bloc Try ....... Catch (avant ton Try) [Il existe également : Using ..... End Using]
    - Ajouter les bonnes exceptions : (exemple : IOException)
    - Utiliser un bloc Try ..... Catch ... Finally et fermer et/ou disposer tes instances dans le Finally

    Ton problème surgit car la clé (issue du mdp) n'étant pas reconnu il lève une exception et du coup tes instances ne sont pas disposées et ton fichier est toujours en lecture/écriture !

    + d'infos ici : https://msdn.microsoft.com/fr-fr/library/fk6t46tz.aspx

    A+

  3. #3
    Membre confirmé
    Homme Profil pro
    Téléconseiller
    Inscrit en
    Juin 2010
    Messages
    119
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Téléconseiller
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Juin 2010
    Messages : 119
    Par défaut
    Bonjour Wallace1

    je te remercie pour ta réponse qui ma permis de modifier mon code de façon à surmonter mon erreur de la façon suivante :
    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
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
     
    Imports System
    Imports System.IO
    Imports System.Security
    Imports System.Security.Cryptography
    Imports System.Text
     
    Module ModuleDecrypt
        'Doit correspondre à 64 bits, 8 octets.
        Dim sSecretKey As String = Form3.TextBox1.Text
     
        Sub Decrypt()
     
            DecryptFile("C:\CnC\login" & Form2.TextBoxJoueur.Text & "Encrypted.txt", _
        "C:\CnC\login" & Form2.TextBoxJoueur.Text & ".txt", _
        sSecretKey)
            DecryptFile("C:\CnC\pass" & Form2.TextBoxJoueur.Text & "Encrypted.txt", _
            "C:\CnC\pass" & Form2.TextBoxJoueur.Text & ".txt", _
            sSecretKey)
     
        End Sub
     
        Sub DecryptFile(ByVal sInputFilename As String, _
           ByVal sOutputFilename As String, _
           ByVal sKey As String)
     
            Dim fsread As New FileStream(sInputFilename, FileMode.Open, FileAccess.Read)
     
            Dim fsDecrypted As New StreamWriter(sOutputFilename)
     
            Try
     
                Dim DES As New DESCryptoServiceProvider()
                'Une clé de 64 bits et un vecteur d'initialisation sont requis pour ce fournisseur.
                'Définit la clé secrète pour l'algorithme DES.
                DES.Key() = ASCIIEncoding.ASCII.GetBytes(sKey)
                'Définit le vecteur d'initialisation.
                DES.IV = ASCIIEncoding.ASCII.GetBytes(sKey)
     
                'crée un flux de fichier pour lire le fichier crypté de retour
                'crée un décrypteur DES à partir de l'instance DES
                Dim desdecrypt As ICryptoTransform = DES.CreateDecryptor()
                'crée un flux de cryptage, défini pour lire et effectuer une transformation
                'de décryptage DES sur les octets entrants
                Dim cryptostreamDecr As New CryptoStream(fsread, desdecrypt, CryptoStreamMode.Read)
                'imprime le contenu du fichier décrypté
                fsDecrypted.Write(New StreamReader(cryptostreamDecr).ReadToEnd)
                fsDecrypted.Flush()
                fsDecrypted.Close()
                fsread.Close()
     
            Catch ex As Exception
                MsgBox("Erreur :" & ex.Message, MsgBoxStyle.Critical, "Z!T¤ùN£ @NT!C!P-W!N-32")
     
            Finally
                fsDecrypted.Close()
                fsread.Close()
            End Try
     
     
        End Sub
    End Module
    je vais pouvoir maintenant me pencher sur comment récupérer l'information de si je rentre ou non dans le "catch exception" ( bon ou mauvais mot de passe de décryptage ) j'ai le sentiment que ton lien va me servir va me rester à essayer de comprendre ^^ .

    merci encore à toi.

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

Discussions similaires

  1. Erreur Fichier utiliser par un autre processus
    Par charouel dans le forum C#
    Réponses: 0
    Dernier message: 12/06/2013, 12h24
  2. Lire fichier utiliser par un autre processus
    Par wmenant dans le forum VB.NET
    Réponses: 7
    Dernier message: 18/08/2009, 16h12
  3. Copier un fichier utilisé par un autre processus
    Par shaun_the_sheep dans le forum Entrée/Sortie
    Réponses: 3
    Dernier message: 29/12/2008, 15h45
  4. [JNI] Fichier utilisé par un autre processus
    Par Julaie95 dans le forum Entrée/Sortie
    Réponses: 2
    Dernier message: 10/08/2006, 11h39
  5. Erreur "Fichier utilisé par un autre processus"
    Par solo3326 dans le forum Langage
    Réponses: 3
    Dernier message: 18/08/2005, 16h55

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