ACL Volume sur les unités (fixes et amovibles).
-
mercredi 4 mars 2009 16:53Bonjour,
J'ai un petit programme qui, à partir de l'API QueryDosDevice(...) récupère le nom du volume associé à une unité. Ensuite, à partir des APIs CreateFile(...) et SetSecurityInfo(...) je modifie la DACL du volume de telle sorte à ce que tel ou tel utilisateur ai ou n'ai pas accés à l'unité. Ceci est fait dynamiquement à travers un service détectant l'arrivée des unités.
Pour être clair et cohérent on obtient un résultat identique avec l'API :
SetNamedSecurityInfo ("\\\\.\\A:",
"\\.\A:" permettant d'accéder au volume et non à la racine de l'unité comme documenté dans l'API CreateFile(...).
SE_FILE_OBJECT,
DACL_SECURITY_INFORMATION|PROTECTED_DACL_SECURITY_INFORMATION,
NULL,
NULL,
paclNew,
NULL);
Tout ceci fonctionne bien sous XP, sous Vista c'est une autre chose, cela continue à fonctionner pour le lecteur de desquette, les CDROMS, mais plus du tout pour les autres unité. En fait quand je dit que cela ne fonctionne plus pour les autre unité, cela se concrétise par le fait que je ne peu plus par ce biai interdire à un utilisateur l'ouverture de fichier sur les autres unités. Je peu toujours jouer sur l'usage du format.exe et du chkdsk.exe.
Si, en terme de pilote, je me refére au document "Removable storage device and Windows Vista support" (http://www.microsoft.com/whdc/device/storage/remstorperms.mspx) le "File System Stack" est bien au dessus du "Volume Manager stack" chose que je constate dans l'outil "Device tree V2.19" de la société OSR (http://www.osronline.com/)
Quelqu'un peut'il m'indiquer comment on peut, sous Vista, utiliser (par programmation) les ACLs pour donner des droits sur les volumes. J'ai apperçu que le GPO perméttaient de mettre des ACLs par défaut sur des classes de pilotes, mais je souhaiterais retrouvers ma fonctionnalité sous Vista.
ATTENTION : je ne parle pas ici des droits NTFS sur la racine des volume (\\.\X:\).
Merci d'avance.
JPB
Toutes les réponses
-
dimanche 26 juillet 2009 13:35ModérateurBonjour,
N'est ce pas un problème à cause du fait que vous n'avez pas réalisé une élévation des priviligès sous Vista ?
Cordialement
Gilles TOURREAU - MVP C# -
lundi 27 juillet 2009 09:55Bonjour,
C'est une réponse bateau sous Vista ;O)
Je ne pense pas qu'elle soit adaptée ici, dans la limite ou je pose l'ACL, mais je n'ai pas le résultat esconté.
Ceci dit si vous pouvez développer concrètement votre réponse, je suis preneur.
Cordialement.
JPB
JPB -
mardi 28 juillet 2009 05:48ModérateurBonjour,
Ce que je veux dire c'est que l'appel à "SetNamedSecurityInfo" nécessite (il me semble) un élévation des privilèges utilisateurs (si l'UAC est activé).
Pouvez-vous nous indiquer le code d'erreur que vous obtenez après l'échec de l'appel ? (Via GetLastError()).
Cordialement
Gilles TOURREAU - MVP C#- Marqué comme réponse Gilles TOURREAUMVP, Moderator vendredi 14 mai 2010 08:02
- Non marqué comme réponse Bleucat vendredi 14 mai 2010 11:29
-
mercredi 9 septembre 2009 07:54Bonjour,
Désolé pour le retard. Mais encore une fois, il n'y a pas d'erreur.
Juste un comportement différent. Et un problème de compréhension de l'architecture de ma part.
Cordialement.
JPB

