Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

[VC++] Creation d'un repertoire partagé a certains users

5 réponses
Avatar
Alex
Bonjour ;)

J'aimerais créer un dossier partagé, avec acces autorisé uniquement à
certains users et a l'administrateur. Je sais que pour créer un dossier il
faut utliser CreateDirectory, mais pour défnir le fait qu'il s'agit d'un
dossier partagé, et définir qui peut y lire/écrire/... je ne sais pas du
tout comment faire.

Existe-t-il une classe, api, ... qui permet de réaliser cela ?

Je vous remercie. a++

5 réponses

Avatar
Christian ASTOR
Alex wrote:

J'aimerais créer un dossier partagé, avec acces autorisé uniquement à
certains users et a l'administrateur. Je sais que pour créer un dossier
il faut utliser CreateDirectory, mais pour défnir le fait qu'il s'agit
d'un dossier partagé, et définir qui peut y lire/écrire/... je ne sais
pas du tout comment faire.



NetShareAdd() (PSDK => Netshare.c)
Avatar
Alex
Bonjour,

Merci beaucoup pour cette info. Cependant j'ai beau chercher sur le net, je
ne trouve que des exemples (dont celui donné par microsoft) où le dossier
est partagé suivant la procédure suivante :
- Full acces via l'admin
- Read only via everyone

Si par hasard vous aviez un exemple montrant comment utiliser les structures
de sécurité (PSECURITY_DESCRIPTOR) pour gérer les acces en lecture/ecriture
au niveau de l'utilisateur (et non d'un groupe comme everyone ou de l'admin)
ca m'aiderait pas mal...

Merci en tt cas ;) a++
Avatar
Christian ASTOR
Alex wrote:

Merci beaucoup pour cette info. Cependant j'ai beau chercher sur le net, je
ne trouve que des exemples (dont celui donné par microsoft) où le dossier
est partagé suivant la procédure suivante :
- Full acces via l'admin
- Read only via everyone

Si par hasard vous aviez un exemple montrant comment utiliser les
structures de sécurité (PSECURITY_DESCRIPTOR) pour gérer les acces en lecture/ecriture
au niveau de l'utilisateur (et non d'un groupe comme everyone ou de
l'admin) ca m'aiderait pas mal...



Mais l'exemple Netshare.c prend un User ou un Groupe en paramètre (pour
LookupAccountNameW())
Avatar
Alex
Merci..

Cependant, par defaut un dossier partagé est accessible en lecture par tous
les utilisateurs. Je voudrais qu'il ne soit accessible qu'a un seul
utilisateur, et que tous les autres ne puissent meme pas le lire.

J'essaye de modifier cet acces en utilisant la fonction AddAccessDeniedAce
au lieu de AddAccessAllowAce pour le groupe Users mais ca ne marche pas :(

Que je mette AddAccessAllowAce ou AddAccessDeniedAce le résultat est le
même...

Je suis sous Vista, le probleme peut venir de cela ??

La fonction LookupAccountNameW me renvoie bien un SID. Je n'ai pas d'erreur
lors de l'execution.

Si vous avez par hasard une idée ;) Merci encore.

Voila mon code :
....
DirectoryToShare = L"C:ee";
Sharename = L"Sharename";
Username = L"Users"; // Groupe Users
Server = NULL;

....

//
// compute size of new acl
//

dwAclSize = sizeof(ACL) +
1 * ( sizeof(ACCESS_DENIED_ACE) - sizeof(DWORD) ) +
GetLengthSid(pSid) ;

....

if(!AddAccessDeniedAce(
pDacl,
ACL_REVISION,
GENERIC_ALL,
pSid
)) goto cleanup;

....


"Christian ASTOR" a écrit dans le message de
news:470ffad7$0$21144$
Alex wrote:

Merci beaucoup pour cette info. Cependant j'ai beau chercher sur le net,
je
ne trouve que des exemples (dont celui donné par microsoft) où le dossier
est partagé suivant la procédure suivante :
- Full acces via l'admin
- Read only via everyone

Si par hasard vous aviez un exemple montrant comment utiliser les
structures de sécurité (PSECURITY_DESCRIPTOR) pour gérer les acces en
lecture/ecriture
au niveau de l'utilisateur (et non d'un groupe comme everyone ou de
l'admin) ca m'aiderait pas mal...



Mais l'exemple Netshare.c prend un User ou un Groupe en paramètre (pour
LookupAccountNameW())


Avatar
Christian ASTOR
On 13 oct, 14:44, "Alex" wrote:

Cependant, par defaut un dossier partagé est accessible en lecture par tous
les utilisateurs. Je voudrais qu'il ne soit accessible qu'a un seul
utilisateur, et que tous les autres ne puissent meme pas le lire.



Je viens de re-tester (sous XP SP2, pas Vista) et si je fais :

netshare c:temp toto DomainUser

c:temp n'est accessible qu'à User.
Les autres utilisateurs ont un "Accès refusé"