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 :

Copie du dossier "Mes Documents" impossible, accès refusé.


Sujet :

VB.NET

  1. #1
    Membre à l'essai
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Décembre 2013
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Décembre 2013
    Messages : 40
    Points : 23
    Points
    23
    Par défaut Copie du dossier "Mes Documents" impossible, accès refusé.
    Bonjour,

    Voici mon problème: j'essaye de faire une sauvegarde des profiles se trouvant dans le dossier "utilisateurs" mais en ne prenant que les dossiers important comme "bureau", "mes documents", "Favoris", "images"....etc.

    Le problème est qu'il bute sur le dosssier "Mes Documents\ma musique", "mes images" et je pense aussi "mes vidéos" qui se trouvent dans "mes documents" qui sont en fait des "hard link" dossiers protégés.

    J'ai vue qu'il y avait le "File.GetAttributes" avec "If (File.GetAttributes(Users & "\" & NomProfil & "\Documents\Ma Musique") And FileAttributes.ReparsePoint) = FileAttributes.ReparsePoint Then",
    mais j'arrive pas à l'utiliser.
    Je voudrai juste trouver le code qui dit que si le dossier est un dossier caché ou dossier protégé alors il les ignore(ou la solution pour copier le dossier "mes documents").

    voici mon code juste pour la copie du dossier "mes documents" de chaque profils:

    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
    Dim Profil As String
            Dim Users As String = My.Application.GetEnvironmentVariable("USERPROFILE").Substring(0, My.Application.GetEnvironmentVariable("USERPROFILE").LastIndexOf("\"))
            For Each Profil In System.IO.Directory.GetDirectories(Users)
                Dim di As New DirectoryInfo(Profil)
                Dim NomProfil As String = di.Name
                Dim Profildestination As String = (Drive & NomPC & "\Profils\" & NomProfil & "\")
                If Directory.Exists(Users & "\" & NomProfil & "\Documents") Then
     
                    Try
                        My.Computer.FileSystem.CopyDirectory(Users & "\" & NomProfil & "\Documents\", Profildestination & "Documents\", True)
                    Catch erreur As Exception
                        My.Computer.FileSystem.WriteAllText(Drive & NomPC & "\Erreurs.txt", vbCrLf & "-" & erreur.Message & vbCrLf, True)
                    End Try
                End If
            Next
    Mon code retourne donc un fichier texte avec les erreurs rencontrées qui est pour chaque profil : -Access to the path 'C:\Users\*****\Documents\Ma musique' is denied.

    Pour les autres dossier comme "bureau", Favoris" etc j'ai pas de problème et j'exécute tout en admin bien sur.
    Merci de votre aide

  2. #2
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Avril 2013
    Messages
    267
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2013
    Messages : 267
    Points : 0
    Points
    0
    Par défaut
    bonjour,
    essayer ceci , il marche parfaitement.
    voici en image :
    Nom : teste.jpg
Affichages : 975
Taille : 34,7 Ko

    voici mes codes :
    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
    Imports System.IO
     
    Public Class Form1
     
        Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
            TextBox1.Text = My.Computer.FileSystem.SpecialDirectories.MyDocuments
            ListBox1.Items.Clear()
            For Each foundFile As String In My.Computer.FileSystem.GetDirectories(TextBox1.Text)
                If (foundFile.ToLower().EndsWith("")) Then ListBox1.Items.Add(foundFile.Split("\")(foundFile.Split("\").Count() - 1))
            Next
            Label2.Text = ListBox1.Items.Count
        End Sub
     
        Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
            Dim dossier As String = My.Computer.FileSystem.SpecialDirectories.Desktop & "\test"
            If Directory.Exists(dossier) = False Then
                Directory.CreateDirectory(dossier)
            End If
            My.Computer.FileSystem.CopyDirectory(TextBox1.Text, dossier & "\", FileIO.UIOption.AllDialogs)
        End Sub
    End Class
    Bien cordialement,

  3. #3
    Membre éclairé
    Homme Profil pro
    Technicien bio médical
    Inscrit en
    Décembre 2012
    Messages
    328
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien bio médical
    Secteur : Santé

    Informations forums :
    Inscription : Décembre 2012
    Messages : 328
    Points : 768
    Points
    768
    Par défaut
    Bonjour,
    J'ai passé un peu de temps à chercher à répondre à votre question et voici ce que j'ai pu trouver :

    Les dossiers Mes documents, Ma musique, ... sont des dossiers dit Système. Ils ont été créés par le système d'exploitation. Il n'est apparemment pas possible de copier un dossier système en temps que tel. Par contre, il est possible de copier son contenu.

    L'idée est donc de créer un dossier portant le même nom que le dossier système dans le répertoire de destination puis de copier le contenu de ce dossier.
    Pour vérifier qu'un dossier est un fichier système, on utilise l'expression suivante (tirée de MSDN et modifiée) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    'Soit _f un objet DirectoryInfo créé avec le path voulu
    Dim _f As New DirectoryInfo("Mon Path")
    If (_f.Attributes And FileAttributes.System) = FileAttributes.System Then
     
    End If
    En utilisant ce principe, il devient donc possible de copier tout un dossier système.
    est ton amis, MSDN est ton maître, pour le reste il y a Developpez.net. Pensez au au et

  4. #4
    Membre à l'essai
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Décembre 2013
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Décembre 2013
    Messages : 40
    Points : 23
    Points
    23
    Par défaut
    Bon je commence a désespérer, j'arrive toujours pas à copier "mes documents".

    Hacker59 ton script a le même problème que le mien, si tu remplace "FileIO.UIOption.AllDialogs" par "true" t'aura le même problème que le mien, et comme je ne veux pas d'une progressbar pour chaque dossier sauvegardés mais une progressbar pour l'ensemble de la sauvegarde, je ne veux pas utiliser "FileIO.UIOption.AllDialogs".

    Rainui, j'avais déjà testé et j'ai retesté ton idée sur mon code mais j'ai toujours le même résultat, merci quand même.

    Au secoure....

  5. #5
    Membre éclairé
    Homme Profil pro
    Technicien bio médical
    Inscrit en
    Décembre 2012
    Messages
    328
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien bio médical
    Secteur : Santé

    Informations forums :
    Inscription : Décembre 2012
    Messages : 328
    Points : 768
    Points
    768
    Par défaut
    Bonjour,

    Dommage, j'ai jeté l'application de test...
    Mais je vous assure que ça fonctionne.
    est ton amis, MSDN est ton maître, pour le reste il y a Developpez.net. Pensez au au et

  6. #6
    Membre à l'essai
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Décembre 2013
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Décembre 2013
    Messages : 40
    Points : 23
    Points
    23
    Par défaut
    Rainui:
    Voila mon code avec ton morceau de script:

    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
    'Variables mises au début de la Class
    Dim Drive As String = SelectDrives.ComboBox1.SelectedItem  'Drive = la lettre que l'on sélectionne dans la combobox
    Dim NomPC As String = Environment.MachineName  'variable d'environnement qui donne le nom du pc
     
    Sub Copie_Docs()
       Dim di As New DirectoryInfo(Profil)
       Dim NomProfil As String = di.Name
       Dim Profildestination As String = (Drive & NomPC & "\Profils\" & NomProfil & "\")
     
       Dim _f As New DirectoryInfo("Mon Path")
     
       If Directory.Exists(Users & "\" & NomProfil & "\Documents") Then
                      My.Computer.FileSystem.CreateDirectory(Drive & NomPC & "\Profils\" & NomProfil & "\Documents")
     
                    Try
                        If (_f.Attributes And FileAttributes.System) = FileAttributes.System Then
    Continue For
                        Else
                            My.Computer.FileSystem.CopyDirectory(Users & "\" & NomProfil & "\Documents", Profildestination & "\Documents", True)
    End If
     Catch erreur As Exception
                        My.Computer.FileSystem.WriteAllText(Drive & NomPC & "\Erreurs.txt", vbCrLf & "-" & erreur.Message & vbCrLf, True)
     
                    End Try
                Next
     End Sub

    Le résultat c'est que je n'est plus le message d'erreur qui dit "C:\Users\****\Documents\Ma musique accès denied" mais rien ne se passe, il n'y a pas de copie de "mes documents".

    Je commence à désespérer....

  7. #7
    Membre chevronné Avatar de _Ez3kiel
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2013
    Messages
    836
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Janvier 2013
    Messages : 836
    Points : 1 961
    Points
    1 961
    Par défaut
    Et si tu débogues en pas-à-pas ? (F11) Tu pourras suivre ton algo et voir les tests passés/ratés.
    Aider les autres, c'est encore la meilleure façon de s'aider soi-même. Martin Gray

    ToDo : Faire une ToDo List

  8. #8
    Membre expérimenté
    Homme Profil pro
    Développeur .Net / Delphi
    Inscrit en
    Juillet 2002
    Messages
    738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Développeur .Net / Delphi
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2002
    Messages : 738
    Points : 1 745
    Points
    1 745
    Par défaut
    Bonjour,

    Votre code ne peut pas fonctionner. Le debug en pas à pas comme le suggère _Ez3kiel vous le démontrera. Evitez de faire des copier-coller de code sans comprendre. Rainui a fournit un bout de code qui donne le principe de la méthode. Le copier ne permettra pas de résoudre votre problème :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim _f As New DirectoryInfo("Mon Path")
    Ici, il faut remplacer "Mon Path" avec le chemin voulu. De plus l'idée de Rainui est de copier l'ensemble des fichiers du dossier système (il faut faire un boucle) vers votre dossier et non pas de copier directement de dossier système. Il a dit que ça ne fonctionnait pas. Je ne peux que vous conseiller de relir le post de Rainui et d'essayez d'appliquer sa méthode.

    Bon courage.

Discussions similaires

  1. Dossier type "Mes documents"
    Par pilate dans le forum Windows XP
    Réponses: 8
    Dernier message: 30/07/2010, 18h36
  2. Réponses: 2
    Dernier message: 11/03/2007, 17h51
  3. Réponses: 6
    Dernier message: 23/11/2006, 23h21

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