locked
ACL Volume sur les unités (fixes et amovibles).

    问题

  • 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:",
                                    SE_FILE_OBJECT,
                                    DACL_SECURITY_INFORMATION|PROTECTED_DACL_SECURITY_INFORMATION,
                                    NULL,
                                    NULL,
                                    paclNew,
                                    NULL);

     "\\.\A:" permettant d'accéder au volume et non à la racine de l'unité comme documenté dans l'API CreateFile(...).

    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
    2009年3月4日 17:14

答案

  • Bonjour,

    Pour fixer ces droits, votre application doit-être lancé en mode administrateur (élévation de privilèges nécessaires).

    Cordialement


    Gilles TOURREAU - MVP C# - MCTS ADO .NET 3.5 - MCPD Windows Developper 3.5 - Architecte .NET/Consultant/Formateur - http://gilles.tourreau.fr
    2010年7月25日 19:34

全部回复

  • Bonjour,

    Pour fixer ces droits, votre application doit-être lancé en mode administrateur (élévation de privilèges nécessaires).

    Cordialement


    Gilles TOURREAU - MVP C# - MCTS ADO .NET 3.5 - MCPD Windows Developper 3.5 - Architecte .NET/Consultant/Formateur - http://gilles.tourreau.fr
    2010年7月25日 19:34
  • Bonjour,

     

    C'est peut-être nécessaire, mais pas suffisant.

    Avez vous fait l'essais ?
    Tenez vous compte de la dernière remarque ?

    Cordialement.

    JPB.

     


    JPB
    2010年7月26日 11:52
  • Bonjour,

    Avez vous fait l'essais ? dans l'e-mail
    Non. Pouvez-vous m'envoyer un projet C++ ou C# qui reproduirait le problème sur gilles.tourreau@pos.fr (merci de mettre l'URL de cette conversation dans l'email).

    Cordialement


    Gilles TOURREAU - MVP C# - MCTS ADO .NET 3.5 - MCPD Windows Developper 3.5 - Architecte .NET/Consultant/Formateur - http://gilles.tourreau.fr
    2010年7月26日 13:45
  • Bonjour,

     

    Le projet est assez important, il faut que je ressorte le bout de code du service qui va bien, ou que je crée un nouveau projet.

    Entre temps j'ai du trouver une autre solution.

    Le code dont je vous parle s'exécute en tant que service, si j'ai un peu de temps durant les congès j'essaierais de tout passer sous Seven pour refaire les tests.

    Mais de votre coté, en dehors de réponses bateau, voyez vous quelle est la différence entre "\\\\.\\X:" et "\\\\.\\Y:" ou d'un coté X est une unité amovible de type lecteur de disquette ou de DVD et Y est une unité amovible de type USB. En reprenant le problème à postériori, je me dit que peut-être depuis Vista les unités sont accessibles par session utilisateur et non plus globalement, mais cela voudrait dire que ce n'est pas vrai pour le CDROM et le lecteur de disquette (que j'arrivais toujours à invalider globalement). j'ai du mal à me faire une idée claire  du schéma de sécurité d'une unité. Avez vous un document approprié ?

    Cordialement.

     JPB


    JPB
    2010年7月27日 6:57