Récupérer l'auteur d'un fichier

cs_lostrailler Messages postés 26 Date d'inscription mercredi 2 juin 2004 Statut Membre Dernière intervention 29 septembre 2010 - 9 oct. 2006 à 16:19
ShareVB Messages postés 2676 Date d'inscription vendredi 28 juin 2002 Statut Membre Dernière intervention 13 janvier 2016 - 22 oct. 2006 à 15:23
Bonjour,

Voilà mon problème est simple. Je cherche une méthode permettant d'acquérir l'auteur d'un fichier. Je pense que celà doit être possible mais j'arrive pas à la trouver. Je récupère beaucoup d'informations mais pas celle-ci.

Si vous pouvez m'aidez s'il vous plait.

Merci d'avance ;-)

11 réponses

Flachy Joe Messages postés 2103 Date d'inscription jeudi 16 septembre 2004 Statut Membre Dernière intervention 21 novembre 2023 1
10 oct. 2006 à 20:22
Tout dépend du fichier, les images JPEG par exemples contiennent des informations sur l'auteur (données EXIF, quand elles sont là...) . Les fichiers Microsoft Office aussi il me semble. Sinon, si ce n'est pas pris en charge par le format de fichier, tu pouras peut être recupérer le nom de l'utilisateur propriétaire du fichier (sur le systeme de fichier NTFS : par défaut pour NT et XP).

[;)] Flachy Joe [;)]
0
cs_lostrailler Messages postés 26 Date d'inscription mercredi 2 juin 2004 Statut Membre Dernière intervention 29 septembre 2010
11 oct. 2006 à 08:59
Oui je me suis mal expliqué, c'est le propriétaire du fichier qui m'intéresse.

Donc si vous savez comment récupérer le propriétaire d'un fichier ?

Excusez-moi.
0
cs_lostrailler Messages postés 26 Date d'inscription mercredi 2 juin 2004 Statut Membre Dernière intervention 29 septembre 2010
11 oct. 2006 à 16:32
Voilà j'ai trouvé comment faire mais il y a un problème.
Ca va être compliqué à expliqué.

Voilà j'arrive à récupérer le propriétaire à travers une boucle :

Set objFolder = objShell.Namespace(Schemin)
i=8
For Each strFileName in objFolder.Items
            proprio = objFolder.GetDetailsOf(strFileName, i)
Next

Seulement voilà je ne dois pas le faire dans une boucle (rapport au code) et lorsque j'enlève la boucle, je ne récupère plus le propriétaire mais l'intitulé qui ici est "propriétaire".

proprio = objFolder.GetDetailsOf(objFolder.Items(), i)

Si vous savez pourquoi ça m'aiderait énormément de plus les informations sur la collection concernée sont minces.

En espérant avoir été clair ;-)

Marci
0
Flachy Joe Messages postés 2103 Date d'inscription jeudi 16 septembre 2004 Statut Membre Dernière intervention 21 novembre 2023 1
11 oct. 2006 à 18:39
T'es sur que l'ordre dans lequel sont stockées les info dans le tableau ne change pas ?
Regarde donc si ça marche pas simplement en changeant i à 9. T'aurais pas par hasard
i=0 : intitulé 1
i=1 : valeur 1
...
i=8 : "propriétaire"
i=9 : "Paul"

Si c'est la cas t'as plus qu'a chercher l'intitulé avec une boucle sur les i et prendre la valeur dans le champ suivant.

[;)] Flachy Joe [;)]
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_lostrailler Messages postés 26 Date d'inscription mercredi 2 juin 2004 Statut Membre Dernière intervention 29 septembre 2010
12 oct. 2006 à 09:18
Salut,

Non le i correspond à ce que je veux récupérer, si je met i à 9 je récupère l'auteur du fichier, à 7 c'est l'attribut et ainsi de suite (3, 4 et 5 c'est pour les dates d'accès, modification, création).

En revanche j'ai réussi à résoudre une partie du problème mais avec celui là un nouveau est apparu.

Je vous montre une partie de ma fonction

    Set ObjRepFind = FSO.GetFolder(Schemin) 'dossier
    Set ObjSubFile = ObjRepFind.Files 'Fichiers
    Set objShell = CreateObject("Shell.Application")
    Set objFolder = objShell.Namespace(Schemin)

    Dim proprio(999)
    For Each ObjSubFileItem In ObjSubFile 'Traiter chaque fichier du répertoire
        'Recherche du propriétaire
        i = 8
        j=0
        For Each strFileName in objFolder.Items
           proprio(j) = objFolder.GetDetailsOf(strFileName, i)
            j=j+1
        Next
        msgbox proprio(0)

Donc mon problème est le suivant, ici je récupère les propriétaires dans un tableau statique proprio(999) seulement ce n'est pas bon et il faut que je les récupère dans un tableau dynamique (car je vais dépasser très certainement 65000 enregistrements) et lorsque j'enlève le 999 donc que je met proprio() je ne récupère plus rien dans ma boucle :'(

Le msgbox proprio(0) me sert de test pour savoir si le tableau s'est remplis.
0
cs_lostrailler Messages postés 26 Date d'inscription mercredi 2 juin 2004 Statut Membre Dernière intervention 29 septembre 2010
12 oct. 2006 à 14:02
Retour au problème de départ :'(

Mon problème est donc toujours celui la :

Voilà j'arrive à récupérer le propriétaire à travers une boucle :

Set objFolder = objShell.Namespace(Schemin)
i=8
For Each strFileName in objFolder.Items
            proprio = objFolder.GetDetailsOf(strFileName, i)
Next

Seulement voilà je ne dois pas le faire dans une boucle (rapport au code) et lorsque j'enlève la boucle, je ne récupère plus le propriétaire mais l'intitulé qui ici est "propriétaire".

proprio = objFolder.GetDetailsOf(objFolder.Items(), i)

Si vous savez pourquoi ça m'aiderait énormément de plus les informations sur la collection concernée sont minces.

En espérant avoir été clair ;-)

Merci

Désolé pour ce petit bordel
0
Flachy Joe Messages postés 2103 Date d'inscription jeudi 16 septembre 2004 Statut Membre Dernière intervention 21 novembre 2023 1
12 oct. 2006 à 19:08
Une page de référence : http://www.microsoft.com/technet/scriptcenter/guide/sas_fil_lunl.mspx?mfr=true

Tente sans mettre de parentheses à objFolder.Items().

[;)] Flachy Joe [;)]
0
cs_lostrailler Messages postés 26 Date d'inscription mercredi 2 juin 2004 Statut Membre Dernière intervention 29 septembre 2010
13 oct. 2006 à 09:19
J'avais déjà essayé mais le résultat est le même.

J'ai réussi à simplifier de beaucoup ma fonction mais je récupère toujours l'intitulé :'(

Je vous la montre en entier comme ça se sera peut être plus simple :

Function ListerDossierTxt(Schemin, Fichier, cpt) 'Lister l'arborescence du dossier
    On Error Resume Next
    Dim FSO
    Set FSO = CreateObject("Scripting.FileSystemObject") 'Objet FSO
    Dim ObjRep
    Set ObjRep = FSO.GetFolder(Schemin) 'dossier
    Dim ObjSubRep
    Set ObjSubRep = ObjRep.SubFolders 'sous-dossiers
    Dim ObjSubRepItem
    For Each ObjSubRepItem In ObjSubRep 'Traiter chaque sous-dossiers
        ListerDossierTxt ObjSubRepItem.path, Fichier, cpt 'traiter les sous-dossiers
    Next
    Dim ObjRepFind
    Set ObjRepFind = FSO.GetFolder(Schemin) 'dossier
    Dim ObjSubFile
    Set ObjSubFile = ObjRepFind.Files 'Fichiers
    Dim ObjSubFileItem, Filename
    Set objShell = CreateObject("Shell.Application")
    Set objFolder = objShell.Namespace(Schemin)
    For Each ObjSubFileItem In ObjSubFile 'Traiter chaque fichier du répertoire
       'Récupératon de l'attribut du fichier
        att = ObjSubFileItem.Attributes
        'Affectation du numéro de l'attribut à son nom
        Select Case att
            Case 0 attribut = "Normal"
            Case 1 attribut = "Read Only"
            Case 2 attribut = "Hidden"
            Case 4 attribut = "System"
            Case 8 attribut = "Volume"
            Case 16 attribut = "Directory"
            Case 32 attribut = "Archive"
            Case 1024 attribut = "Alias"
            Case 2048 attribut = "Compressed"
            Case Else attribut = "Inconnu"
        End Select
        'Recherche du propriétaire
        i = 8
        StrFileName = objFolder.GetDetailsOf(ObjSubFileItem.Name, i)
        'Ecriture dans le fichier
        Fichier.WriteLine ObjSubFileItem.Name & "|" & ObjSubFileItem.path & "|"  & ObjSubFileItem.ParentFolder & "|"& ObjSubFileItem.DateCreated & "|" & ObjSubFileItem.DateLastAccessed & "|" & ObjSubFileItem.DateLastModified & "|" & ObjSubFileItem.Size & "|" & ObjSubFileItem.Type & "|" & FSO.GetExtensionName(ObjSubFileItem.name) & "|" & attribut & "|" & StrFileName & "|"
        'Incrémentation du compteur
        cpt = cpt + 1
    Next
End Function

J'ai une deuxième foction presque identique sauf qu'au lieu d'enregistrer dans le fichier ça enregistre dans la base de données.
0
Flachy Joe Messages postés 2103 Date d'inscription jeudi 16 septembre 2004 Statut Membre Dernière intervention 21 novembre 2023 1
13 oct. 2006 à 22:34
Ça ne marche avec aucun indice ? C'est pas le nom du propriétaire qui est réellement "propriétaire" au moins ?

Ça n'a pas l'air d'être une fonction tres documentée...

[;)] Flachy Joe [;)]
0
cs_lostrailler Messages postés 26 Date d'inscription mercredi 2 juin 2004 Statut Membre Dernière intervention 29 septembre 2010
14 oct. 2006 à 11:54
Non c'est pas du tout le nom du prorpiétaire qui est propriétaire. Parceque quand je fait un copier-coller de la boucle fournit sur le site Microsft je récupère bien le nom du propriétaire. La seule chose que je fait ici c'est enlevé la boucle :'(
0
ShareVB Messages postés 2676 Date d'inscription vendredi 28 juin 2002 Statut Membre Dernière intervention 13 janvier 2016 26
22 oct. 2006 à 15:23
0
Rejoignez-nous