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 :

Création de dossier -> attribut lecture seule VB6 / XP


Sujet :

VB 6 et antérieur

  1. #1
    Candidat au Club
    Inscrit en
    Février 2008
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 3
    Points : 2
    Points
    2
    Par défaut Création de dossier -> attribut lecture seule VB6 / XP
    Bonjour
    Quand je crée un dossier sous VB6, quelle que soit la méthode employée, il se crée avec l'attribut ReadOnly. Impossible de le retirer autrement qu'à la souris.
    J'ai essayé avec MkDir.
    Avec le FileSystemObject CreateFolder (Attributes retourné: 16).
    Avec l'API CreateDirectory de kernel32.

    Quelqu'un a-t-il une solution?

    Voici le dernier bout de code que j'ai essayé:

    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
    Private Sub Form_Load()
     
    'Création du répertoire TEST s'il n'existe pas
        Set fso = CreateObject("Scripting.FileSystemObject")
    'Crée le repertoire
        'If Not fso.FolderExists("C:\Test") Then
            'Crée le repertoire
            Set Fld = fso.CreateFolder("C:\Test")
        'End If
    Set oFld = fso.GetFolder("C:\Test")
      MsgBox "Attributes  :" & oFld.Attributes & vbCrLf & _
             "DateCreated :" & oFld.DateCreated & vbCrLf & _
             "DateLastAccessed :" & oFld.DateLastAccessed & vbCrLf & _
             "DateLastModified :" & oFld.DateLastModified & vbCrLf & _
             "Drive :" & oFld.Drive & vbCrLf & _
             "IsRootFolder :" & oFld.IsRootFolder & vbCrLf & _
             "Name :" & oFld.Name & vbCrLf & _
             "ParentFolder :" & oFld.ParentFolder & vbCrLf & _
             "Path :" & oFld.Path & vbCrLf & _
             "ShortName :" & oFld.ShortName & vbCrLf & _
             "ShortPath :" & oFld.ShortPath & vbCrLf & _
             "Size :" & oFld.Size & vbCrLf & _
             "SubFolders.Count :" & oFld.SubFolders.Count & vbCrLf & _
             "Type :" & oFld.Type
     
    End Sub

  2. #2
    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,

    pour moi, l'attribut 16 n'est pas readonly (attribut 1) ...

  3. #3
    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

  4. #4
    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
    VB te fournit tout pour créer ce que tu veux et comme tu l'entends :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Private Sub Command1_Click()
      Dim dossier As String
      dossier = "e:\voilou\"
      If Dir(dossier, vbDirectory) = "" Then 'tu vérifies que ce dossier n'existe pas
        MkDir dossier ' s'il n'esite pas tu le crées
        SetAttr dossier, vbNormal ' et le dote d'un attribut de ton choix (ici : normal)
      End If
    End Sub

  5. #5
    Membre expert
    Avatar de Delbeke
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    2 675
    Détails du profil
    Informations personnelles :
    Âge : 71
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 2 675
    Points : 3 696
    Points
    3 696
    Par défaut
    Héhé, et en plus la constate vbDirectory vaut 16.
    Bizare non ? lool

  6. #6
    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 Delbeke ...

    Tu crois qu'il va "capter" ??

  7. #7
    Candidat au Club
    Inscrit en
    Février 2008
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 3
    Points : 2
    Points
    2
    Par défaut
    Citation Envoyé par ucfoutu Voir le message
    Bonjour Delbeke ...

    Tu crois qu'il va "capter" ??
    Eh bien non. "Il" ne capte pas. "Il" débute.
    J'ai quand même un peu cherché, et d'après ce que j'ai lu, l'attributes 16 signifie que le dossier n'est pas en lecture seule.
    Quand à la fonction SetAttr, je l'avais essayée sans plus de succès.

    Finalement, j'ai quand même réussi à me dépatouiller de mon problème en allant trafiquer les droits administrateurs sous XP (contrôle total), puis en les remettant comme ils étaient précédemment. Je ne vois pas ce que ça a pu faire, mais ça a débloqué mon problème.

    Ce que je ne comprend pas, c'est comment, en agissant au niveau des dll, on ne contourne pas les bugs inhérents à XP (qui me semble être une belle m.. par ailleurs!).

    Si quelqu'un a une explicaation sur ce qui a pu se passer, je serais heureux de la connaître.

    Merci de vos réponses, même si elles ont parfois un caractère sybillin.

  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,

    Je n'ai pas tes problèmes avec XP !!!

    L'attribut 16 correspond tout simplement à la constante vbDirectory et veut dire qu'il s'agit d'un répertoire (rien d'autre) !!! (ce que tu aurais vu en ouvrant ton aide en ligne (nécessaire à tous et à fortiori à un débutant) sur le mot Dir ou sur le mot GetAttr .... tous les attributs y figurent ...)

  9. #9
    Membre expert
    Avatar de Delbeke
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    2 675
    Détails du profil
    Informations personnelles :
    Âge : 71
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 2 675
    Points : 3 696
    Points
    3 696
    Par défaut
    Bon, l'attribut 16 correspond à l'attribut Répertoire
    Donc si tu trouves 16 dans l'attribut, cela veut dire que ce fichier est en fait un répertoire.

    Voici ce que l'aide de vb affiche quand on cherche la fonction GetAttr

    GetAttr, fonction


    Renvoie une valeur de type Integer indiquant les attributs du fichier ou du dossier.

    Syntaxe

    GetAttr(pathname)

    L'argument pathname est uneexpression de chaîne définissant un nom de fichier. L'argument pathname peut préciser le répertoire ou le dossier et le lecteur.

    Valeurs renvoyées

    La valeur renvoyée par GetAttr est la somme des valeurs d'attributs ci-dessous :

    Constante Valeur Description
    vbNormal 0 Normal
    vbReadOnly 1 Lecture seule
    vbHidden 2 Caché
    vbSystem 4 Système.
    vbDirectory 16 Répertoire ou dossier
    vbArchive 32 Fichier modifié depuis la dernière sauvegarde.


    Note Cesconstantes sont définies par Visual Basic pour Applications. Vous pouvez les utiliser partout dans votre code pour remplacer des valeurs réelles.

    Remarques

    Pour déterminer les attributs du fichier, utilisez l'opérateur And pour effectuer unecomparaison au niveau du bit de la valeur renvoyée par la fonction GetAttr et de la valeur de l'attribut de fichier concerné. Si le résultat est différent de zéro, le fichier comporte l'attribut indiqué. Par exemple, la valeur renvoyée pour l'expression And ci-dessous est zéro si l'attribut Archive n'est pas défini :

    Result = GetAttr(FName) And vbArchive

    Une valeur non nulle est renvoyée si le fichier comporte l'attribut Archive.

  10. #10
    Candidat au Club
    Inscrit en
    Février 2008
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 3
    Points : 2
    Points
    2
    Par défaut
    Citation Envoyé par Delbeke Voir le message
    Bon, l'attribut 16 correspond à l'attribut Répertoire
    Donc si tu trouves 16 dans l'attribut, cela veut dire que ce fichier est en fait un répertoire.
    Je vous remercie de m'avoir répondu... bien que ça n'aie pas répondu à ma question.
    Il est normal que le fichier que je crée aie les les attributs d'un répertoire, puisque c'est ce que je veux faire: avec MkDir, si je me retrouvais avec un fichier txt, je me poserais d'autres questions.
    Je répète que mon problème vient du fait que le dossier (ou répertoire, comme tu veux) que j'ai créé a les attributs lecture seule, et que je ne peux rien mettre dedans.

    Bon, je crois que je vais clore le sujet, puisqu'il semble que ce soit dû à un problème XP...

    Encore merci à tous.

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

Discussions similaires

  1. [2008] Création d'un compte en lecture seule sur une base snapshot
    Par scazikiss dans le forum Administration
    Réponses: 12
    Dernier message: 26/03/2013, 15h46
  2. Attribut lecture seule sous seven
    Par jmde dans le forum Windows 7
    Réponses: 1
    Dernier message: 14/06/2011, 09h04
  3. Dossier Attribut lecture seule
    Par Mario Rousson dans le forum Windows Vista
    Réponses: 1
    Dernier message: 10/05/2008, 01h19
  4. Réponses: 6
    Dernier message: 30/10/2007, 15h04
  5. Réponses: 1
    Dernier message: 14/03/2006, 11h24

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