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

WinDev Discussion :

"owner" du fichier ? quid multi-user


Sujet :

WinDev

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    425
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 425
    Points : 129
    Points
    129
    Par défaut "owner" du fichier ? quid multi-user
    Bonjour,

    J'ai besoin de vos lumières :

    -J'ai une application qui est stockée sur un disque partagé
    -un des sous-repertoires de l'application est un repertoire commun à tous les utilisateurs

    but recherché :

    - quand utilisateur x drop un fichier dans ce sous-répertoire : uniquement son instance de d'appli doit "réagir" sur son drop.

    - alors qu'en même temps d'autre utilisateurs ont la même appli ouverte sur leurs poste (et on donc aussi droit à dropper des fichiers dans le fameux sous-repertoire)

    je pensais pouvoir utiliser une api du genre http://support.microsoft.com/default...%3Bfr%3B218965

    mais c'est pas gagné et je ne suis pas assez doué pour le convertir en language WD

    Je pensais donc matcher le resseau-utilisateur avec le propriétaire du fichier dans le sous-repertoire.

    donc...a l'aide

  2. #2
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    425
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 425
    Points : 129
    Points
    129
    Par défaut
    J'ai trouvé ceci en C++ mais il me faudrai de l'aide pour le traduire

    http://msdn.microsoft.com/en-us/libr...(v=vs.85).aspx

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    425
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 425
    Points : 129
    Points
    129
    Par défaut
    J'ai déjà la moitié de ma réponse avec ceci...
    je dois encore nettoyer le code

    il me reste encore a trouver le SID du fichier ????


    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
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
     
    PROCEDURE Nouvelle_Procédure()
    SidTypeUser est un entier = 1 
    SidTypeGroup est un entier = 2 
    SidTypeDomain est un entier = 3 
    SidTypeAlias est un entier= 4 
    SidTypeWellKnownGroup est un entier = 5 
    SidTypeDeletedAccount est un entier = 6 
    SidTypeInvalid est un entier = 7 
    SidTypeUnknown est un entier = 8 
    SidTypeComputer est un entier = 9 
    SidTypeLabel est un entier = 10 
    SID_IDENTIFIER_AUTHORITY est une structure 
    Value est un tableau fixe de 6 entier sur 1 octet//Type C : BYTE 
    FIN 
    nSECURITY_NT_AUTHORITY est un entier = 0x5 
    SECURITY_BUILTIN_DOMAIN_RID est un entier = 0x20 
    DOMAIN_ALIAS_RID_ADMINS est un entier = 0x220 
    auth est un SID_IDENTIFIER_AUTHORITY 
    auth:Value[1] = 0 
    auth:Value[2] = 0 
    auth:Value[3] = 0 
    auth:Value[4] = 0 
    auth:Value[5] = 0 
    auth:Value[6] = 5 
    iSID est un entier 
    cbName est un entier // Type C :LPDWORD 
    cbReferencedDomainName est un entier // Type C :LPDWORD 
    iSID_Type est un entier 
    iRetour est un entier 
    strTypeSID est une chaîne 
    Name2 est Buffer sur 256 
    ReferencedDomainName2 est un Buffer sur 256 
    strSID est une chaîne 
    iTest est un entier 
    iTest = 2 
    SELON iTest 
    CAS 1: 
     
    iRetour = API("ADVAPI32.DLL","AllocateAndInitializeSid", &auth, 2,SECURITY_BUILTIN_DOMAIN_RID, DOMAIN_ALIAS_RID_ADMINS, 0, 0, 0, 0, 0, 0,&iSID) 
    CAS 2: 
     
    strSID = "S-1-5-21-4200578454-1428876943-2532967949-1000"
    //+Caract(0) 
     
    iRetour = API("ADVAPI32.dll","ConvertStringSidToSidA",&strSID,&iSID) 
    AUTRE CAS 
     
    FIN 
    SI iRetour <> 0 ALORS 
    cbName = 256 
    cbReferencedDomainName = 256 
    QUAND EXCEPTION DANS 
     
    SI API("ADVAPI32.DLL","LookupAccountSidA", Null, iSID, &Name2, &cbName, &ReferencedDomainName2, &cbReferencedDomainName, &iSID_Type) <> 0 ALORS 
     
    SELON iSID_Type 
     
    CAS SidTypeUser 
     
    strTypeSID = "user" 
     
    CAS SidTypeGroup 
     
    strTypeSID = "group" 
     
    CAS SidTypeDomain 
     
    strTypeSID = "domain" 
     
    CAS SidTypeAlias 
     
    strTypeSID = "alias" 
     
    CAS SidTypeWellKnownGroup 
     
    strTypeSID = "WellKnownGroup" 
     
    CAS SidTypeDeletedAccount 
     
    strTypeSID = "DeletedAccount" 
     
    CAS SidTypeInvalid 
     
    strTypeSID = "Invalid" 
     
    CAS SidTypeUnknown 
     
    strTypeSID = "Unknown" 
     
    CAS SidTypeComputer 
     
    strTypeSID = "Computer" 
     
    CAS SidTypeLabel 
     
    strTypeSID = "Label" 
     
    AUTRE CAS 
     
    strTypeSID = "Autre" 
     
    FIN 
     
    Info("Utilisateur:"+Name2,"Domaine:"+ReferencedDomainName2,"Type:"+strTypeSID) 
    SINON 
     
    Erreur(ErreurInfo()) 
    FIN 
    FAIRE 
    Info(ExceptionInfo(errComplet)) 
    ExceptionActive() 
    FIN 
    FIN 
    SI API("Advapi32.dll","FreeSid",iSID) <> Null ALORS 
    Erreur(ErreurInfo()) 
    FIN

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    425
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 425
    Points : 129
    Points
    129
    Par défaut
    J'ai trouvé cette autre réponse mais je n'arrive pas à résoudre le probleme
    après le premier appel de la dll "La taille du descripteur de sécurité du fichier n'a pas été récupérée."

    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
     
    PROCEDURE fRenvoyerNomProprietaireEtNomDomaine(sNomfichierLoc,sNomProprietaire,sNomDomaine)
    bRes est un booléen=Faux //resultat des appels de DLL
    sizeSD est un entier=0 //taille du buffer permettant de stocker le "SECURITY_DESCIPTOR" du fichier et de récupérer le SID du propriétaire
    psizeSD est un entier=0 //pointeur permettant de récupérer la taille du buffer
    pSIDProprietaire est un entier=0 //pointeur sur le SID du propriétaire du fichier
    lpbOwnerDefaulted est un entier=0 // ?
     
     
    //sNomProprietaire est une chaine="" //nom du proprietaire
    //sNomDomaine est une chaine="" //nom de domaine ou du pc
    nTailleBufferNomProprietaire est un entier=0 //taille du buffer contenant le nom du propriétaire
    nTailleBufferNomDomaine est un entier=0 // taille du buffer contenant le nom du domaine ou du pc
    gbufSecurityDescriptor est un Buffer //buffer contenant le SECURITY_DESCIPTOR du fichier
    deUse est un entier=0 //pointeur sur une enumeration SID_NAME_USE indiquant le type de compte utilisateur du propriétaire
    sNomDuSyteme est une chaîne="" // ? nom du syteme d'exploitation (?)
    gbufBufferfixe est un Buffer sur 200 //Création d'un buffer vide de taille fixe servant à redimensionner le buffer de récupération du SECURITY_DESCIPTOR du fichier
     
    SI sNomfichierLoc<>"" ALORS
    gbufSecurityDescriptor=" " //Initialisation du buffer de récupération du SECURITY_DESCIPTOR du fichier (ne pas mettre de chaine vide
    // (1) 1er appel à la DLL permettant de récupérer la taille du security descriptor du fichier
    // ------------------------------------------------------------------------------------------
    //syntaxe dans l'aide Windev : AppelDLL32("advapi32.dll", "GetFileSecurityA" , &lpFileName, RequestedInformation, &pSecurityDescriptor, nLength, &lpnLengthNeeded) 
    API("ADVAPI32.DLL","GetFileSecurityA",&sNomfichierLoc,OWNER_SECURITY_INFORMATION, &gbufSecurityDescriptor,sizeSD,&psizeSD) //renvoi faux ici
    SI psizeSD>0 ALORS
    //c'est ok, on continue
    //Fixe la taille du buffer récupérant le SECURITY_DESCIPTOR du fichier
    sizeSD=psizeSD 
    //redimensionnement du buffer par rapport à la taille récupérée lors du premier appel
    gbufSecurityDescriptor=Gauche(gbufBufferfixe,sizeSD)
    // (2) 2ème appel à la DLL permettant de récupérer cette fois le SECURITY_DESCIPTOR du fichier
    // -------------------------------------------------------------------------------------------
    bRes=API("ADVAPI32.DLL","GetFileSecurityA",&sNomfichierLoc,OWNER_SECURITY_INFORMATION, &gbufSecurityDescriptor,sizeSD,&psizeSD) //doit renvoyer vrai
    SI bRes ALORS
    //c'est ok, on continu
    // (3) appel à la DLL permettant de récupérer le pointeur sur le SID du propriétaire du fichier
    //---------------------------------------------------------------------------------------------
    //AppelDLL32("advapi32.dll", "GetSecurityDescriptorOwner" , &pSecurityDescriptor, &pOwner, &lpbOwnerDefaulted) 
    bRes=AppelDLL32("advapi32.dll", "GetSecurityDescriptorOwner" , gbufSecurityDescriptor, &pSIDProprietaire, &lpbOwnerDefaulted) 
    SI bRes ALORS
    // c'est ok, on continue
    // (4) appel à la DLL permettant de récupérer les tailles des buffers contenant le nom du propriétaire et nom du domaine grâce au SID du propriétaire du fichier
    //--------------------------------------------------------------------------------------------------------------------------------------------------------------
    //AppelDLL32("advapi32.dll", "LookupAccountSidA" , &lpSystemName, &Sid, &lpname, &cbName, &lpReferencedDomainName, &cbReferencedDomainName, &peUse) 
    bRes=AppelDLL32("advapi32.dll", "LookupAccountSidA" , &sNomDuSyteme, pSIDProprietaire, &sNomProprietaire, &nTailleBufferNomProprietaire, &sNomDomaine, &nTailleBufferNomDomaine, &deUse) 
    SI nTailleBufferNomProprietaire>0 ET nTailleBufferNomDomaine>0 ALORS
    //redimensionnement indispensable des variables contenant les noms du propriétaire et du domaine
    sNomProprietaire=Complète(sNomProprietaire,nTailleBufferNomProprietaire)
    sNomDomaine=Complète(sNomDomaine,nTailleBufferNomDomaine)
    // (5) appel à la DLL permettant de récupérer le nom du propriétaire et le nom du domaine grâce au SID du propriétaire du fichier
     
    //------------------------------------------------------------------------------------------------------------------------------- 
    bRes=AppelDLL32("advapi32.dll", "LookupAccountSidA" , &sNomDuSyteme, pSIDProprietaire, &sNomProprietaire, &nTailleBufferNomProprietaire, &sNomDomaine, &nTailleBufferNomDomaine, &deUse) 
    //on enlève le caractère "0" de fin de chaîne
    sNomProprietaire=Gauche(sNomProprietaire,nTailleBufferNomProprietaire) 
    sNomDomaine=Gauche(sNomDomaine,nTailleBufferNomDomaine)
    SI bRes ET sNomProprietaire<>"" ALORS
    //tout est ok
    Info("Le propriétaire du fichier est : "+sNomProprietaire+" "+sNomDomaine)
    SINON
    Erreur("Le nom du propriétaire du fichier : "+sNomfichierLoc,"n'a pas pu être déterminé.")
    FIN 
    SINON
    Erreur("Les tailles des buffers du nom du propriétaire du fichier et du nom du domaine n'ont pas pu être récupérées..")
    FIN 
    SINON
    Erreur("Le pointeur sur le SID du propriétaire du fichier n'a pas pu être récupéré.") 
    FIN
    SINON
    Erreur("Le descripteur de sécurité du fichier n'a pas pu être récupéré.") 
    FIN 
    SINON 
    Erreur("La taille du descripteur de sécurité du fichier n'a pas été récupérée.") 
    FIN 
    FIN

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    425
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 425
    Points : 129
    Points
    129
    Par défaut
    Bon, j'ai su faire parler tout cela mais pas correctement

    J'aurais aimé avoir un SID en string style : S-1-5-21-4200578454-1428876943-2532967949-1000

    je ne sais par pourquoi mais le string 'racoursi' ne donne pas le nom et domaine exacte


    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
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    PROCEDURE fRenvoyerNomProprietaireEtNomDomaine(sNomfichierLoc)
    SidTypeUser est un entier = 1 
    SidTypeGroup est un entier = 2 
    SidTypeDomain est un entier = 3 
    SidTypeAlias est un entier= 4 
    SidTypeWellKnownGroup est un entier = 5 
    SidTypeDeletedAccount est un entier = 6 
    SidTypeInvalid est un entier = 7 
    SidTypeUnknown est un entier = 8 
    SidTypeComputer est un entier = 9 
    SidTypeLabel est un entier = 10 
    cbName est un entier
    CbReferencedDomainName est un entier système
    iSID_Type est un entier 
    Name2 est Buffer sur 256 
    ReferencedDomainName2 est un Buffer sur 256 
    strTypeSID est une chaîne 
    bRes est un booléen=Faux //resultat des appels de DLL
    sizeSD est un entier //taille du buffer permettant de stocker le "SECURITY_DESCIPTOR" du fichier et de récupérer le SID du propriétaire
    PsizeSD est un entier système //pointeur permettant de récupérer la taille du buffer
    pSIDProprietaire est un entier //pointeur sur le SID du propriétaire du fichier
    lpbOwnerDefaulted est un entier // ?
    GbufSecurityDescriptor est un Buffer //buffer contenant le SECURITY_DESCIPTOR du fichier
    GbufBufferfixe est un Buffer sur 200 //Création d'un buffer vide de taille fixe servant à redimensionner le buffer de récupération du SECURITY_DESCIPTOR du fichier
    SI sNomfichierLoc<>"" ALORS
    GbufSecurityDescriptor=" " //Initialisation du buffer de récupération du SECURITY_DESCIPTOR du fichier (ne pas mettre de chaine vide
    // (1) 1er appel à la DLL permettant de récupérer la taille du security descriptor du fichier
    // ------------------------------------------------------------------------------------------
    //syntaxe dans l'aide Windev : AppelDLL32("advapi32.dll", "GetFileSecurityA" , &lpFileName, RequàestedInformation, &pSecurityDescriptor, nLength, &lpnLengthNeeded) 
    API("ADVAPI32.DLL","GetFileSecurityA",&sNomfichierLoc,OWNER_SECURITY_INFORMATION,GbufSecurityDescriptor,0,&PsizeSD) //renvoi faux ici
    //ErreurInfo(ErrCodeSystème)
    //ErreurInfo(ErrMessageSystème)
    SI PsizeSD>0 ALORS
    //c'est ok, on continue
    //Fixe la taille du buffer récupérant le SECURITY_DESCIPTOR du fichier
    sizeSD=PsizeSD 
    //redimensionnement du buffer par rapport à la taille récupérée lors du premier appel
    GbufSecurityDescriptor=Gauche(GbufBufferfixe,sizeSD)
    // (2) 2ème appel à la DLL permettant de récupérer cette fois le SECURITY_DESCIPTOR du fichier
    // -------------------------------------------------------------------------------------------
    bRes=API("ADVAPI32.DLL","GetFileSecurityA",&sNomfichierLoc,OWNER_SECURITY_INFORMATION,&GbufSecurityDescriptor,sizeSD,&PsizeSD) //doit renvoyer vrai
    SI bRes ALORS
    //c'est ok, on continu
    // (3) appel à la DLL permettant de récupérer le pointeur sur le SID du propriétaire du fichier
    //---------------------------------------------------------------------------------------------
    //AppelDLL32("advapi32.dll", "GetSecurityDescriptorOwner" , &pSecurityDescriptor, &pOwner, &lpbOwnerDefaulted) 
    bRes=AppelDLL32("advapi32.dll", "GetSecurityDescriptorOwner" , GbufSecurityDescriptor, &pSIDProprietaire, &lpbOwnerDefaulted) 
    SI bRes ALORS
     
     
    sNomProprietaire est une chaîne="" //nom du proprietaire
    sNomDomaine est une chaîne="" //nom de domaine ou du pc
    nTailleBufferNomProprietaire est un entier = 0
    nTailleBufferNomDomaine est un entier = 0
    deUse est un entier = 0
     
    //AppelDLL32("advapi32.dll", "LookupAccountSidA" , null, pSIDProprietaire, &sNomProprietaire, &nTailleBufferNomProprietaire, &sNomDomaine, &nTailleBufferNomDomaine, &deUse)
    //sNomProprietaire=Complète(sNomProprietaire,nTailleBufferNomProprietaire)
    //sNomDomaine=Complète(sNomDomaine,nTailleBufferNomDomaine)
    //AppelDLL32("advapi32.dll", "LookupAccountSidA" , null, pSIDProprietaire, &sNomProprietaire, &nTailleBufferNomProprietaire, &sNomDomaine, &nTailleBufferNomDomaine, &deUse)
     
     
    cbName = 256 
    CbReferencedDomainName = 256 
    QUAND EXCEPTION DANS 
     
    SI API("ADVAPI32.DLL","LookupAccountSidA",Null, pSIDProprietaire, &Name2, &cbName, &ReferencedDomainName2, &CbReferencedDomainName, &iSID_Type) <> 0 ALORS 
     
    SELON iSID_Type 
     
    CAS SidTypeUser 
     
    strTypeSID = "user" 
     
    CAS SidTypeGroup 
     
    strTypeSID = "group" 
     
    CAS SidTypeDomain 
     
    strTypeSID = "domain" 
     
    CAS SidTypeAlias 
     
    strTypeSID = "alias" 
     
    CAS SidTypeWellKnownGroup 
     
    strTypeSID = "WellKnownGroup" 
     
    CAS SidTypeDeletedAccount 
     
    strTypeSID = "DeletedAccount" 
     
    CAS SidTypeInvalid 
     
    strTypeSID = "Invalid" 
     
    CAS SidTypeUnknown 
     
    strTypeSID = "Unknown" 
     
    CAS SidTypeComputer 
     
    strTypeSID = "Computer" 
     
    CAS SidTypeLabel 
     
    strTypeSID = "Label" 
     
    AUTRE CAS 
     
    strTypeSID = "Autre" 
     
    FIN 
     
    Info("Utilisateur:"+Name2,"Domaine:"+ReferencedDomainName2,"Type:"+strTypeSID) 
    SINON 
     
    Erreur(ErreurInfo()) 
    FIN 
    FAIRE 
    Info(ExceptionInfo(errComplet)) 
    ExceptionActive() 
    FIN 
     
    SINON
    Erreur("Les tailles des buffers du nom du propriétaire du fichier et du nom du domaine n'ont pas pu être récupérées..")
    FIN 
    SINON
    Erreur("Le pointeur sur le SID du propriétaire du fichier n'a pas pu être récupéré.") 
    FIN
    SINON
    Erreur("Le descripteur de sécurité du fichier n'a pas pu être récupéré.") 
    FIN 
    SINON 
    Erreur("La taille du descripteur de sécurité du fichier n'a pas été récupérée.") 
    FIN 
     
     
    [FONT=System][FONT=System][/FONT][/FONT]

  6. #6
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    425
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 425
    Points : 129
    Points
    129
    Par défaut
    Pour finir...je pense que je pourais me débrouiller avec une simple commande cmd dir "nom du fichier" /Q >log.txt
    et lire les infos dans le txt

    Moins élégant mais ça fonctionne !

    N'hésitez pas à me donner vos commentaires !

    BAV

  7. #7
    Membre émérite
    Avatar de DelphiManiac
    Homme Profil pro
    Homme à tout faire
    Inscrit en
    Mars 2002
    Messages
    1 147
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Homme à tout faire
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 147
    Points : 2 533
    Points
    2 533
    Par défaut
    Le dernier code posté par toi le : 09/05/2013, 22h31 semble fonctionner.

    Pourquoi celui là ne te convient pas ?

Discussions similaires

  1. Multi User et fichier cfg , mes programmes perdent le nord ?
    Par boulbi dans le forum Windows Vista
    Réponses: 7
    Dernier message: 10/09/2007, 17h10
  2. Réponses: 2
    Dernier message: 14/03/2004, 16h14

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