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 Droits d'accès de certains dossiers


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 VB Droits d'accès de certains dossiers
    Bonjour,
    Voila j'essaye de de faire un treeview qui déploie le "Disque local (C" je mets donc "c:\" comme path mais lorsque j'exécute il me fait un message d'erreur du style:
    "Une erreur s'est produite lors de la création du formulaire. Pour plus d'informations, consultez Exception.InnerException. L'erreur est : L'accès au chemin d'accès 'C:\$Recycle.Bin\S-1-5-20' est refusé."
    parfoit il me met: Une erreur s'est produite lors de la création du formulaire. Pour plus d'informations, consultez Exception.InnerException. L'erreur est : L'accès au chemin d'accès 'C:\Document and setting' est refusé. (alors que je suis sous W7 et administrateur de mon poste).

    J'imagine qu'il y a un script qui donne les droits d'accès ou admin mais je ne trouve rien.

    merci de m'aider.

    Pour info mon script commence comme ça:

    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
    Imports System.IO
    Public Class Form1
        Private Sub ListView1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ListView1.SelectedIndexChanged
        End Sub
        Private Sub PopulateTreeView()
            Dim rootNode As TreeNode
            Dim info As New DirectoryInfo("C:\") ' err
     
            If info.Exists Then
                rootNode = New TreeNode(info.Name)
                rootNode.Tag = info
                GetDirectories(info.GetDirectories(), rootNode)
                TreeView1.Nodes.Add(rootNode)
            End If
     
        End Sub
    Je précise que le script fonctionne si je mets "c:\users\monprofile\desktop\"

    Merci.

  2. #2
    Inactif  

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2012
    Messages
    4 904
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4 904
    Points : 10 168
    Points
    10 168
    Billets dans le blog
    36
    Par défaut
    Bonjour,

    Une idée comme cela : si tu fais exécuter VB en tant qu'administrateur ?


    Sinon, tu peux toujours jeter un œil sur cet exemple :

    http://code.msdn.microsoft.com/VBUAC...ation-4c014507

    Sinon, je ne sais pas.
    À ma connaissance, le seul personnage qui a été diagnostiqué comme étant allergique au mot effort. c'est Gaston Lagaffe.

    Ô Saint Excel, Grand Dieu de l'Inutile.

    Excel n'a jamais été, n'est pas et ne sera jamais un SGBD, c'est pour cela que Excel s'appelle Excel et ne s'appelle pas Access junior.

  3. #3
    Expert confirmé
    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
    Points : 4 005
    Points
    4 005
    Billets dans le blog
    7
    Par défaut
    Bonjour bylliboy,

    Il faut que tu paramètres le niveau de privilège d'exécution de ton programme depuis le fichier .manifest de ton projet :
    http://www.developpez.net/forums/d12...p/#post7056421


    A+

  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
    Citation Envoyé par clementmarcotte Voir le message
    Bonjour,

    Une idée comme cela : si tu fais exécuter VB en tant qu'administrateur ?


    Sinon, tu peux toujours jeter un œil sur cet exemple :

    http://code.msdn.microsoft.com/VBUAC...ation-4c014507

    Sinon, je ne sais pas.

    Oui je suis administrateur de la machine et VS est lancé en tant qu'admin
    J'ai regardé ton lien mais ça m'a pas aidé, merci quand même.

  5. #5
    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
    Citation Envoyé par wallace1 Voir le message
    Bonjour bylliboy,

    Il faut que tu paramètres le niveau de privilège d'exécution de ton programme depuis le fichier .manifest de ton projet :
    http://www.developpez.net/forums/d12...p/#post7056421


    A+
    Merci Wallace1, j'ai modifié comme indiqué sur ton lien mais j'ai toujours la même erreur, j'ai même essayé avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <requestedExecutionLevel  level="highestAvailable" uiAccess="false" />
    Pareil.
    Donc j'en suis au même point.

  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
    J'affiche mon script (qui n'est pas le mien à l'origine:http://msdn.microsoft.com/en-us/libr...=vs.80%29.ASPX).

    Le script n'est pas fini, j'y ajouterai des checkbox dans le treeview pour exécuter une copie des dossiers sélectionnés.
    Pour l'instant je veux juste afficher dans mon treeview le "Disque local (c" et rien d'autre.
    Peut être que ça aidera quelqu'un pour m'aider

    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
    79
    80
    81
    82
    Imports System.IO
    Public Class Form1
     
        Private Sub ListView1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ListView1.SelectedIndexChanged
     
        End Sub
     
        Private Sub PopulateTreeView()
            Dim rootNode As TreeNode
     
            Dim info As New DirectoryInfo("C:\")
     
     
            If info.Exists Then
     
                rootNode = New TreeNode(info.Name)
                rootNode.Tag = info
                GetDirectories(info.GetDirectories(), rootNode)
                TreeView1.Nodes.Add(rootNode)
            End If
     
        End Sub
     
        Private Sub GetDirectories(ByVal subDirs() As DirectoryInfo, ByVal nodeToAddTo As TreeNode)
     
            Dim aNode As TreeNode
            Dim subSubDirs() As DirectoryInfo
            Dim subDir As DirectoryInfo
            For Each subDir In subDirs
                aNode = New TreeNode(subDir.Name, 0, 0)
                aNode.Tag = subDir
                aNode.ImageKey = "folder"
                subSubDirs = subDir.GetDirectories()
                If subSubDirs.Length <> 0 Then
                    GetDirectories(subSubDirs, aNode)
                End If
                nodeToAddTo.Nodes.Add(aNode)
            Next subDir
     
        End Sub
     
        Public Sub New()
            InitializeComponent()
            PopulateTreeView()
     
        End Sub 'New
     
        Private Sub treeView1_NodeMouseClick(ByVal sender As Object, ByVal e As TreeNodeMouseClickEventArgs) Handles TreeView1.NodeMouseClick
     
            Dim newSelected As TreeNode = e.Node
            ListView1.Items.Clear()
            Dim nodeDirInfo As DirectoryInfo = CType(newSelected.Tag, DirectoryInfo)
            Dim subItems() As ListViewItem.ListViewSubItem
            Dim item As ListViewItem = Nothing
     
            Dim dir As DirectoryInfo
            For Each dir In nodeDirInfo.GetDirectories()
                item = New ListViewItem(dir.Name, 0)
                subItems = New ListViewItem.ListViewSubItem() {New ListViewItem.ListViewSubItem(item, "Directory"), New ListViewItem.ListViewSubItem(item, _
                    dir.LastAccessTime.ToShortDateString())}
     
                item.SubItems.AddRange(subItems)
                ListView1.Items.Add(item)
            Next dir
            Dim file As FileInfo
            For Each file In nodeDirInfo.GetFiles()
                item = New ListViewItem(file.Name, 1)
                subItems = New ListViewItem.ListViewSubItem() {New ListViewItem.ListViewSubItem(item, "File"), New ListViewItem.ListViewSubItem(item, _
                    file.LastAccessTime.ToShortDateString())}
     
                item.SubItems.AddRange(subItems)
                ListView1.Items.Add(item)
            Next file
     
            ListView1.AutoResizeColumns(ColumnHeaderAutoResizeStyle.HeaderSize)
     
        End Sub
     
        Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
     
        End Sub
    End Class

    Merci d'avance à ceux qui m'apporteront des éléments de réponse.

  7. #7
    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
    Fait bizarre, si je remplace "c:\" par "c:\users\MonProfil\Documents\" il me met le message d'erreur suivant:

    Nom : Capture2.PNG
Affichages : 699
Taille : 14,0 Ko

    Pourquoi il va dans "c:\users\MonProfil\Documents\Ma musique" ? C'est pareil avec "c:\" le message d'erreur pointe vers "c:\Documents and Setting\" alors que je suis en W7.

  8. #8
    Expert confirmé
    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
    Points : 4 005
    Points
    4 005
    Billets dans le blog
    7
    Par défaut
    Bon.... visiblement tu n'as pas compris le code que tu as copiés...... :

    La fonction " GetDirectories" accepte en 1er argument une variable de type DirectoryInfo à laquelle tu as affectés et instanciés préalablement le chemin "C:\".
    Donc lorsque la méthode "GetDirectories" est lancée, ça parcours toute l'arborescence de C:\ à la recherche de répertoires donc ne t'étonnes pas si
    - "c:\users\MonProfil\Documents\Ma musique" est contenu dans "C:\"
    - "c:\Documents and Settings\" est contenu dans "C:\"

    Concernant les répertoires auxquels tu n'as pas accès, je dirais que c'est normal, certains correspondent à des alias qui permettent au système seul d'avoir accès du fait de son appartenance au groupe de sécurité.

    1- Tu peux atteindre les mêmes emplacement mais :
    - avec tes autorisations d'utilisateur membre du groupe administrateurs
    - en pointant un autre chemin (utilisation des variables d'environnement)

    2- Dans les bonnes pratiques de programmation, il faut que tu gères les exceptions pour déterminer si oui ou non l'utilisateur sera en mesure d'accéder aux emplacements.

    3- Lis ce post entièrement, ca devrait t'intéresser : http://www.developpez.net/forums/d14...acces-dossier/


    A+

  9. #9
    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
    Citation Envoyé par wallace1 Voir le message
    Bon.... visiblement tu n'as pas compris le code que tu as copiés...... :

    La fonction " GetDirectories" accepte en 1er argument une variable de type DirectoryInfo à laquelle tu as affectés et instanciés préalablement le chemin "C:\".
    Donc lorsque la méthode "GetDirectories" est lancée, ça parcours toute l'arborescence de C:\ à la recherche de répertoires donc ne t'étonnes pas si
    - "c:\users\MonProfil\Documents\Ma musique" est contenu dans "C:\"
    - "c:\Documents and Settings\" est contenu dans "C:\"

    Concernant les répertoires auxquels tu n'as pas accès, je dirais que c'est normal, certains correspondent à des alias qui permettent au système seul d'avoir accès du fait de son appartenance au groupe de sécurité.

    1- Tu peux atteindre les mêmes emplacement mais :
    - avec tes autorisations d'utilisateur membre du groupe administrateurs
    - en pointant un autre chemin (utilisation des variables d'environnement)

    2- Dans les bonnes pratiques de programmation, il faut que tu gères les exceptions pour déterminer si oui ou non l'utilisateur sera en mesure d'accéder aux emplacements.

    3- Lis ce post entièrement, ca devrait t'intéresser : http://www.developpez.net/forums/d14...acces-dossier/


    A+

    Oui effectivement je pige pas grand chose, je suis un vrai "newbie", j'essaye d'apprendre le vb.net en suivant des tutos mais c'est pas facile, d'ailleurs je cherche un prof particulier qui pourrai m'éclairer sur les tutos et sur les scripts que j'essaye de faire. (t'as l'air de maîtriser Wallace1, ça te dirai pas de m'enseigner un peux ou juste m'expliquer ce que je comprends pas sur les tutos? ).

    Concernant le "chemin" j'ai déjà essayé les variable d'environnement et d'ailleurs en vb je ne connais que
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Environment.SystemDirectory
    pour désigner le C: mais ça ne marche pas, et je ne vois pas ce que je pourrai mettre à la place de ("c:\") pour obtenir l'arborescence du Disque local.
    Je suis bien membre du groupe administrateurs sur mon pc.


    Désolé d'être si pitoyable en VB.Net

  10. #10
    Expert confirmé
    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
    Points : 4 005
    Points
    4 005
    Billets dans le blog
    7
    Par défaut
    Nombreux sont ceux qui croient que le fait d'être débutant dans un langage de programmation est une sorte de tare, c'est un faux prétexte car on a tous été débutant mais nous n'avons pas tous débutés au même endroit !

    En somme, ce n'est pas le langage qui permet à tout un chacun d'avoir une meilleure vision et de fait une meilleur approche d'un problème à résoudre : c'est le raisonnement et la maîtrise du domaine dans lequel on souhaite orienter notre projet !

    Quand on souhaite faire du développement sur Windows, il faut déjà connaitre un minimum le fonctionnement de l'OS (NT) : le registre, le NTFS, les API natives, les services,... etc......

    ...brefff quand on sait qu'on a des lacunes alors on glane l'information car les ressources sur le Web (ou dans les bouquins) sont les premiers éléments qui nous permettent d'appréhender le futur domaine d'un projet.

    ......... Ouverture de la parenthèse............

    Je ne prétends pas "maîtriser" comme tu le dis, je suis un autodidacte qui dans un moment de sa vie a décider de prendre le taureau par les cornes en me lançant dans l'apprentissage de la programmation en 2005 avec des notions minimes en langage de script ".bat" (2 ans) mais de bonnes notions que j'entretiens depuis sur l'architecture OS Windows (il existe des bouquins pour ca d'ailleurs) :
    - j'ai suivi mes premiers cours de langage algorithmique sur le web
    - acheté des bouquins sur l'expression de besoin, l'étude, la modélisation de projet, (CRC, UML,...etc..) ...etc.....
    - j'ai lu des infos sur la POO
    - j'ai choisi mon langage : VbNet puis C# et j'ai lu la bible du parfait développeur VbNet de Mr Lasserre Philippe : http://plasserre.developpez.com/cour...e=introduction
    - j'ai ensuite commencé à faire mon 1er vrai projet en 2008 en utilisant l'outil "Visual Paradigm" et l'EDI "Visual Studio 2008".

    ....brefffff...... Si tu as toujours envie de développer tu sais ce qu'il te reste à faire .... :

    - soit bricoler mais arrivera un moment, après avoir pris des mauvaises habitudes, ou tu te diras je veux passer à un autre langage mais c'est difficile car les bases ne sont pas présentes !
    - soit commencer par les bases.......


    ......... Fermeture de la parenthèse............


    Les variables d'environnement :

    http://plasserre.developpez.com/cour...-forms4#LX-P-4

    "My" reste l'espace de noms incontournable du langage VBNET et tes variables d'environnement tu pourraient aisément les trouver dedans :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    My.Application.GetEnvironmentVariable("SYSTEMDRIVE")
    Ca marche aussi pour :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    My.Application.GetEnvironmentVariable("TEMP")
    My.Application.GetEnvironmentVariable("WINDIR")
    My.Application.GetEnvironmentVariable("USERNAME")
    My.Application.GetEnvironmentVariable("APPDATA")


    Mais bien sure tout ceci se situe dans la bible de Mr Lasserre.



    A+

  11. #11
    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
    Merci pour les infos, je viens de me télécharger tout le cours VB.NET en pdf pour le potasser, j'espère que j'aurai pas trop de mal.

    Mon projet actuel est de faire une folderbrowserdialog dans un treeview pour pouvoir utiliser les checkbox pour par exemple l'utiliser dans un programme de backup de pc ou un programme d'éventaille de manipulation de dossiers et fichiers....

    Encore merci pour tes conseils.

Discussions similaires

  1. droit d'accès d'un dossier avec powershell
    Par radovan dans le forum Scripts/Batch
    Réponses: 0
    Dernier message: 30/03/2012, 11h33
  2. [Spip] Spip : droit d'accès refusé au dossier IMG/claranet
    Par celbok dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 2
    Dernier message: 17/08/2008, 02h10
  3. [Security] Droit d'accès a un dossier avec acegi-security
    Par Fennec. dans le forum Spring
    Réponses: 1
    Dernier message: 31/03/2008, 09h25
  4. Samba, droit d'accès au sous-dossiers
    Par Nemes dans le forum Sécurité
    Réponses: 1
    Dernier message: 14/12/2007, 11h28
  5. Droits d'accès sur un dossier
    Par Ricou13 dans le forum Apache
    Réponses: 7
    Dernier message: 03/01/2006, 22h53

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