Bloquer la suppression d'un fichier sous WinXP

Bloquer la suppression d'un fichier sous WinXP - API Win32 - Programmation

Marsh Posté le 09-02-2009 à 17:47:19    

Salut,
 
Voici ma question : Est-il possible de bloquer la suppression d'un fichier à tous les utilisateurs d'un ordinateur (y compris les membres du groupe local Administrateurs) sauf le compte système local (LocalSystem) ?
Je suis sur un système de fichier NTFS, et j'ai fait pas mal de test en modifiant les ACL, ACE et Owner du fichier, mais rien n'y fait.
 
J'ai essayé les choses suivantes :
- Mettre dans les ACL uniquement le compte système avec toutes les permissions en laissant comme propriétaire le groupe Administrateur Local
- Mettre dans les ACL uniquement le compte système avec toutes les permissions en mettant comme propriétaire le compte Système Local
Mais dans les deux cas, je peux quand même supprimer mon fichier en étant un 'simple' administrateur ? (je ne peux pas le déplacer, ni le voir, ni le renommer, même pas le mettre dans la corbeille, mais pour le supprimer, pas de problème ...)
 
Est-ce que je dois ajouter dans mon ACL, une entrée pour explicitement refuser l'accès au fichier ?
Si oui sur quel SID dois-je faire la règle ? Si je mets le groupe Administrateurs ça risque de bloquer LocalSystem ... :s
Est-ce que je dois faire une entrée pour chaque compte Administrateur enregistré sur le poste ?
 
Avez-vous des idées ?
 
PS: j'utilise les fonctions de l'API Win32 de base pour la gestion des droits (SetFileSecurity, SetSecurityDescriptorDacl et cie...)
 


---------------
By bob.
Reply

Marsh Posté le 09-02-2009 à 17:47:19   

Reply

Marsh Posté le 11-02-2009 à 00:00:59    

J'ai essayé d'ajouter dans la DACL une règle pour bloquer le compte administrateur surlequel je suis loggé, mais ça ne bloque toujours pas la suppression (en utilisant ce même compte), c'est comme si, à partir du moment où on est admin, on peut TOUJOURS supprimer un fichier quels que soient les ACL ...


---------------
By bob.
Reply

Marsh Posté le 11-02-2009 à 15:55:49    

Vérouille le fichier avec un appel à CreateFile, du genre :
 

Code :
  1. CreateFileW(path, GENERIC_READ, 0, NULL, OPEN_EXISTING, 0, NULL);


shareMode vaut 0, donc personne ne peut lire, écrire et supprimer le fichier (sans même ton propre processus). Tu pourras sans doute affiner, pour être un peu moins violent.

Reply

Marsh Posté le 11-02-2009 à 21:23:16    

tpierron a écrit :

Vérouille le fichier avec un appel à CreateFile, du genre :
 

Code :
  1. CreateFileW(path, GENERIC_READ, 0, NULL, OPEN_EXISTING, 0, NULL);


shareMode vaut 0, donc personne ne peut lire, écrire et supprimer le fichier (sans même ton propre processus). Tu pourras sans doute affiner, pour être un peu moins violent.


Je t'avoue que j'avais pensé à une solution de ce genre ... mais bon ça oblige de laisser un processus ou un service dans la nature pour ouvrir le ou les fichiers à bloquer ...
Merci en tous cas.


---------------
By bob.
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed