Interdire la modification d'un dossier
Le
sympatix
Bonjour !
Avant de me lancer dans un VBS de surveillance d'un dossier, je voudrais
savoir s'il existe une commande scriptable et native de windows (XP),
permettant d'interdire la modification d'un dossier.
J'entends par là:
1: Interdire l'ajout de fichiers et/ou sous-dossiers.
2: Interdire la suppression de fichiers et/ou sous-dossiers.
3: Mais permettre malgré tout l'accès à tous les fichiers, mais en lecture
seule.
En VBS, il existe bien la commande DateLastModified pour surveiller le
dossier (et l'attribut "lecture seule" pour les fichiers est paramétrable),
mais, celà ne me permettra pas par exemple d'interdire la suppression d'un
fichier. Je ne pourrai que le constater après coup, par le changement de
valeur de cette variable (DateLastModified). C'est mieux que rien, et je me
contenterai de ça si je ne trouve pas mieux, mais ça fait un peu
"bricolage", d'autant plus ( bon, ce n'est pas le pire) qu'il faut
instancier en permanence un script vbs, dédié à la surveillance du dossier.
Merci d'avance pour toutes infos, aide, et suggestions :-)
--
Cordialement
saint_path_x_arobase_t'es_laide_euh_point_fr
(Antispam: Ôter les "toto" dans l'adresse, pour me répondre)
Avant de me lancer dans un VBS de surveillance d'un dossier, je voudrais
savoir s'il existe une commande scriptable et native de windows (XP),
permettant d'interdire la modification d'un dossier.
J'entends par là:
1: Interdire l'ajout de fichiers et/ou sous-dossiers.
2: Interdire la suppression de fichiers et/ou sous-dossiers.
3: Mais permettre malgré tout l'accès à tous les fichiers, mais en lecture
seule.
En VBS, il existe bien la commande DateLastModified pour surveiller le
dossier (et l'attribut "lecture seule" pour les fichiers est paramétrable),
mais, celà ne me permettra pas par exemple d'interdire la suppression d'un
fichier. Je ne pourrai que le constater après coup, par le changement de
valeur de cette variable (DateLastModified). C'est mieux que rien, et je me
contenterai de ça si je ne trouve pas mieux, mais ça fait un peu
"bricolage", d'autant plus ( bon, ce n'est pas le pire) qu'il faut
instancier en permanence un script vbs, dédié à la surveillance du dossier.
Merci d'avance pour toutes infos, aide, et suggestions :-)
--
Cordialement
saint_path_x_arobase_t'es_laide_euh_point_fr
(Antispam: Ôter les "toto" dans l'adresse, pour me répondre)

Poser une question


je pense que cacls fera l'affaire:
cacls Chemin_du_dossier /p:"administrateurs":F "Toutle monde":r /T
Donne accès en controle total au groupe "administrateurs" et accès en
lecture seule au groupe "tout le monde", ceci au niveau du dossier et
objets qu'il contient
news:
tu nous disais:
J'ai regardé l'aide de cacls, mais je n'ai pas tout compris !
Notament, la différence entre le commutateur P et G ?
J'ai quand même fait des tests avec une première fois, la ligne de cde
suivante:
cacls C:test /G "toto":R
puis, en remplaçant G par P:
cacls C:test /P "toto":R
Je n'ai pas remarqué de différence (ou alors, ça m'a échappé)
Sachant que "toto" est administrateur.
J'ai bien la demande de confirm, êtes-vous sûr (O/N) ? je fais O
Ensuite, j'essaye de rajouter un nouveau dossier dans C:test, et c'est
effectivement refusé, cool :-))
Par contre, je supprime un fichier sans problème. Re-parcontre, si je veux
le restaurer depuis la corbeille, c'est refusé (impossible de déplacer dc26,
accès refusé).
Et si je modifie un fichier, pas de problèmes, c'est accepté.
Visiblement, le dossier est protégé, mais uniquement pour empécher l'ajout
de nouveaux fichiers.
Peut-on avec cacls protéger également la modif et la suppression, si oui,
comment ?
Merci encore !
--
Cordialement
saint_path_x_arobase_t'es_laide_euh_point_fr
(Antispam: Ôter les "toto" dans l'adresse, pour me répondre)
news:exX$
tu nous disais:
cacls C:test /P "toto":R /T
J'avais z'oublié le commutateur T. Maintenant, c'est Nickel !
Merci encore, StephaneB
--
Cordialement
saint_path_x_arobase_t'es_laide_euh_point_fr
(Antispam: Ôter les "toto" dans l'adresse, pour me répondre)
suivantes (où je n'ai réeussi qu'à faire marcher la 2):
Source:
http://support.microsoft.com/kb/135268/EN-US/
1: Soit, si le lancement se fait dans un batch, rajouter echo y| et le
symbole "pipe" (Alt Gr 6) devant la ligne:
echo y| cacls C:test /P "toto":R /T
=>Je n'ai pas réeussi à faire fonctionner cette astuce, ça rame quelques
secondes (avec beaucoup d'utilisation du CPU, puis, j'ai une erreur
"l'application n'a pas pu s'initialiser")
2: Soit (c'est mon cas) si c'est dans un vbs, passer par un fichier texte
tiers, le nommer par exemple oui.txt, et le rajouter dans la ligne de cdes
(testé, OK):
cacls C:test /P "toto":R /T
--
Cordialement
saint_path_x_arobase_t'es_laide_euh_point_fr
(Antispam: Ôter les "toto" dans l'adresse, pour me répondre)
news:
tu nous disais:
J'ai parlé trop vite, ça marche pas dans mon vbs.
En fait, j'avais testé uniquement dans l'invite de commandes, et par
extrapolation, supposé que ça fonctionnerais avec un oShellRun dans un vbs.
J'ai fait les manips suivantes:
1: Création d'un fichier "oui.txt" contenant O (la lettre O), à la racine de
C
2: Lancement de la commande, dans l'invite de cde:
cacls C:test /P "toto":R /T => ça roule, je n'ai plus la confirm (O/N ?), et le dossier ne peut plus
être modifé.
3: Création d'un vbs contenant ce qui suit:
-----------vbs-----------
cde = "cmd /cacls C:test /P ""toto"":F /T Set oShell = CreateObject("WScript.Shell")
oShell.Run cde
-----------vbs-----------
=> Normalement, et en invite de cde ça marche, le dossier devrais redevenir
modifiable.
Mais rien. Juste l'invite qui s'ouvre. J'ai bien essayé sans espaces, sans
slash, mais ça ne fonctionne pas.
Je dois mal m'y prendre.
Quelqu'un aurait-il la bonne syntaxe svp, merci :-)
--
Cordialement
saint_path_x_arobase_t'es_laide_euh_point_fr
(Antispam: Ôter les "toto" dans l'adresse, pour me répondre)