Question

J'essaie de définir un indicateur provoquant l'apparition de la case à cocher en lecture seule lorsque vous cliquez sur le bouton droit de la souris sur \ Propriétés dans un fichier.

Merci!

Était-ce utile?

La solution

Deux façons:

System.IO.FileInfo fileInfo = new System.IO.FileInfo(filePath);
fileInfo.IsReadOnly = true/false;

ou

// Careful! This will clear other file flags e.g. FileAttributes.Hidden
File.SetAttributes(filePath, FileAttributes.ReadOnly/FileAttributes.Normal);

La propriété IsReadOnly sur FileInfo effectue essentiellement le retournement de bits que vous auriez à faire manuellement dans la deuxième méthode.

Autres conseils

Pour définir l'indicateur en lecture seule, ce qui rend le fichier non inscriptible:

File.SetAttributes(filePath,
    File.GetAttributes(filePath) | FileAttributes.ReadOnly);

Pour supprimer l'indicateur en lecture seule, ce qui rend le fichier accessible en écriture:

File.SetAttributes(filePath,
    File.GetAttributes(filePath) & ~FileAttributes.ReadOnly);

Pour activer le drapeau en lecture seule, en faisant le contraire de ce qu'il est en ce moment:

File.SetAttributes(filePath,
    File.GetAttributes(filePath) ^ FileAttributes.ReadOnly);

Il s’agit essentiellement de bitmasks. Vous définissez un bit spécifique pour définir le drapeau en lecture seule, vous l’effacez pour supprimer le drapeau.

Notez que le code ci-dessus ne modifiera aucune des propriétés du fichier. En d'autres termes, si le fichier a été masqué avant l'exécution du code ci-dessus, il le restera également par la suite. Si vous définissez simplement les attributs de fichier sur .Normal ou .ReadOnly , vous risquez de perdre d'autres indicateurs dans le processus.

c #:

File.SetAttributes (filePath, FileAttributes.Normal);

File.SetAttributes (filePath, FileAttributes.ReadOnly);

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top