icacls myfile /deny Everyone:(X)
(Si tu met (X) tu empêches d'utiliser le fichier. Il faut mettre (D) pour empêcher sa suppression)
À défaut de mappage des SID, utilise ceux-ci directement
'*' en tête pour signifier que c'est un SIS
S-1-1-0 = Everyone ou World
S-1-2-0 = Utilisateurs connectés
S-1-3-0 = Créateur du fichier
S-1-3-1 = Groupe du créateur du fichier
Mais attention, Everyone (ou World) signifie tout le monde et non pas l'utilisateur connecté etc
Je de déconseille de bidouiller sur les droits d'accès de fichiers sans avoir aucune notion de ce que sont les "sécurités" et les "permissions" d'un système de fichier (équivalent Windows des "droits" et "partages" des systèmes unix)
Si tu veux véritablement protéger certains fichiers de ton application, il est préférable de passer par le système normal, c'est à dire installer avec un compte différent de celui de l'utilisateur (et donc ayant des droits supérieurs) ou alors créer une fonction qui régénère le fichier si l'utilisateur le supprime par erreur (ex: fichier INI régénéré ou repris d'un backup auto dans un répertoire différent)
Le mieux est aussi d'éviter les installation en mode portable, préférer l'utilisation des répertoires de données utilisateurs (
%homepath%) et données programme (
%appdata%) qui évite que le débutant fasse une fausse manipulation. On atteint ces répertoires sous PB avec par exemple GetEnvironmentVariable("appdata")
Quant aux attributs de fichiers
Readonly et
System ils sont un héritage du DOS et sont purement symboliques pour Windows, il y aura juste un message d'information. N'importe quel utilisateur peut les supprimer s'il a accès au répertoire.
De plus, comme l'a dit Fred, bidouiller les fichiers systèmes rend l'application douteuse au yeux des antivirus.
PS. Ne me demande pas de complément d'aide par MP, je n'ai pas le temps, désolé.
