• Advertisement

Droit repertoire à l'application

Tout ce qui concerne la version 11 & plus récentes de windev

**Windev est une marque déposée de Pcsoft**

Droit repertoire à l'application

Messagepar J0r » Jeu Fév 17, 2011 7:22 am

Bonjour,

Dans mes applications je dois gérer une multitude de fichiers appartement à différents services, ces différents fichiers regroupés par type (facture, bon de commande, ...) sont après séparés par répertoire pour chaque service avec des droits différents, tout cela fonctionne très bien mais la mise en place d'un nouveau de type de document demande beaucoup de temps au niveau de la mise en place des droits pour les différents répertoires.
Est-il possible avec Windev de spécifier un utilisateur pour l'ouverture d'un fichier, c'est à dire qu'un utilisateur pourra grâce à l'application lire le contenu du répertoire où il n'a pas les droits ?
J0r
Membre Confirmé
 
Messages: 207
Inscription: Lun Aoû 31, 2009 11:54 am
Localisation: Reims

Advertisement

Re: Droit repertoire à l'application

Messagepar TheDuke » Jeu Fév 17, 2011 9:41 am

Helo Jor!

Je ne sais pas si j'ai bien compris mais s'il s'agit de partager un répertoire avec des droits spécifiques via windev, j'avais trouvé dans le temps une procédure sur un forum (je ne sais plus ou d'ailleurs)

A voir si cela peut faire ton affaire...

Code d'appel

Code: Tout sélectionner
   
// Syntaxe :
//[ <Résultat> = ] PartageRépertoire (<sCheminRépertoire>, <sNomPartage>, <sLibelléPartage>, <sPassword>[, <nDroits>[, <nFlags>[, <nType>]]])
//
// Paramètres :
//        sCheminRépertoire : Chemin du répertoire à supprimer
//        sNomPartage : Le nom du partage à créer
//        sLibelléPartage : Le commentaire du partage
//        sPassword : Mot de passe
//        nDroits : Les droits (PARTAGE_LECTURESEULE, PARTAGE_TOTAL)
//        nFlags : Le partage est persistant ? (PARTAGE_PERSISTANT)
//        nType : Le type de partage PARTAGE_REPERTOIRE
// Valeur de retour :
//         booléen : Vrai  si la création a réussi, faux sinon



Procédure

Code: Tout sélectionner
PROCEDURE PartageRépertoire(sCheminRépertoire,sNomPartage,sLibelléPartage,sPassword,nDroits = PARTAGE_LECTURESEULE,nFlags = PARTAGE_PERSISTANT,nType = PARTAGE_REPERTOIRE)

sNomDll est une chaîne
nRésultat est un entier
nErreur est un entier


SELON SysVersionWindows()
        CAS "95","98","ME"
                sNomDll = "svrapi.dll"
                MesInfosPartage98 est un SHARE_INFO_50
               
                // -------------------------------------------
                // RAPPEL DE LA STRUCTURE UTILISEE
                // -------------------------------------------
               
                //SHARE_INFO_50 est une structure
                //        sNomPartage est une chaine ASCIIZ sur 13
                //        nType est un entier sur 2
                //        nFlags est un entier
                //        nAdresseDescription est un entier
                //        nAdresseChemin est un entier
                //        sMotPasseLectureEcriture est une chaine ASCIIZ sur 9
                //        sMotPasseLectureSeule est une chaine ASCIIZ sur 9
                //FIN       
               
                // Mise à jour des membres de la structure
                MesInfosPartage98:sNomPartage = sNomPartage
                MesInfosPartage98:nType = nType
                MesInfosPartage98:nAdresseChemin = &sCheminRépertoire
                MesInfosPartage98:nAdresseDescription = &sLibelléPartage
                MesInfosPartage98:nFlags = nFlags
                MesInfosPartage98:sNomPartage = sNomPartage
                MesInfosPartage98:sMotPasseLectureEcriture = sPassword
                MesInfosPartage98:sMotPasseLectureSeule = sPassword
               
                nRésultat = API(sNomDll,"NetShareAdd",Null,50,&MesInfosPartage98,Dimension(MesInfosPartage98))
                SI nRésultat<>0 ALORS
                        RENVOYER Faux
                FIN
               
        AUTRE CAS
               
                sNomDll = "netapi32.dll"
               
                MesInfosPartageNT est un SHARE_INFO_2
               
                // Déclaration des variables unicode
                sCheminUnicode est une chaîne UNICODE
                sNomUnicode est une chaîne UNICODE
                sMotPasseUnicode est une chaîne UNICODE
                sRemarqueUnicode est une chaîne UNICODE
                SI nFlags <> PARTAGE_PERSISTANT ALORS
                        nType += 0x40000000 // Partage temporaire
                FIN
                MesInfosPartageNT:nType = nType
                MesInfosPartageNT:nMaxConnection = -1                // Pas de limite de connexion
               
                // Le partage total n'est pas le meme en 95,98,ME qu'en NT, XP, 2000....
                SI nDroits = PARTAGE_TOTAL ALORS
                        MesInfosPartageNT:nPermission = 119
                SINON
                        MesInfosPartageNT:nPermission = nDroits       
                FIN
               
                // Mise à jour du chemin à partager
                sCheminUnicode = AnsiVersUnicode(sCheminRépertoire)
                MesInfosPartageNT:nAdresseChemin = &sCheminUnicode
               
                // Mise à jour du mot de passe
                sMotPasseUnicode = AnsiVersUnicode(sPassword)
                MesInfosPartageNT:sMotDePasse = &sMotPasseUnicode
               
                // Mise à jour du nom du partage
                sNomUnicode = AnsiVersUnicode(sNomPartage)
                MesInfosPartageNT:sNomPartage = &sNomUnicode
               
                // Mise à jour des remarques
                sRemarqueUnicode = AnsiVersUnicode(sLibelléPartage)
                MesInfosPartageNT:sRemarque = &sRemarqueUnicode
               
                nRésultat = API(sNomDll,"NetShareAdd",Null,2,&MesInfosPartageNT,&nErreur)
                SI nRésultat <> 0 ALORS
                        RENVOYER Faux
                FIN       
FIN

RENVOYER Vrai


Bon dev
TheDuke
SUPER MEMBRE
 
Messages: 1268
Inscription: Mer Nov 22, 2006 8:24 pm

Re: Droit repertoire à l'application

Messagepar J0r » Jeu Fév 17, 2011 11:53 am

C'est une piste mais ça ne correspond pas à 100% à ce que je voudrais.
Je voudrais que quelqu'un puisse accéder à un dossier auquel il n'a pas le droit, grâce à l'application, en gros se faire passer pour un autre utilisateur.
J0r
Membre Confirmé
 
Messages: 207
Inscription: Lun Aoû 31, 2009 11:54 am
Localisation: Reims

Re: Droit repertoire à l'application

Messagepar TheDuke » Ven Fév 18, 2011 8:08 am

Salut Jor!

Essaie du côté de la ligne commande!

Code: Tout sélectionner
LanceAppliAssociée("cmd.exe","runas")


Bon DEV
TheDuke
SUPER MEMBRE
 
Messages: 1268
Inscription: Mer Nov 22, 2006 8:24 pm



  • Advertisement

Retourner vers Forum windev 11 & plus récentes

 


  • Articles en relation
    Réponses
    Vus
    Dernier message

Qui est en ligne

Utilisateurs parcourant ce forum: Exabot [Bot] et 0 invités