2009-10-26 7 views
5

Dans une application C# WinForms, j'utilise System.IO.Diagnostics.Process.Start (nomfichier) pour ouvrir les fichiers. Le type de fichier peut être .doc, .docx, .xls, .xlsx, .csv, .pdf ou .txt.Ouvrir le fichier en lecture seule

Est-il possible de forcer ces fichiers à ouvrir en lecture seule?

Répondre

11

Vous devez définir les attributs de fichier du fichier avant de démarrer le processus, puis les rétablir lorsque vous l'avez ouvert.

Exemple:

var attributes = File.GetAttributes(path); 

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

System.IO.Diagnostics.Process.Start(fileName); 

File.SetAttributes(filePath, attributes); 

Note: Cela va changer les attributs de fichier du fichier réel , donc gardez cela à l'esprit.

+0

C'est en fait pas la même chose que d'ouvrir le fichier en mode lecture seule dans la plupart des logiciels. De nombreux programmes (tels que Word) vous permettent d'ouvrir un fichier en lecture seule sans modifier le fichier lui-même. Voir ma réponse pour plus de détails. –

+0

@Reed Oui, j'ai lu votre réponse avant d'ajouter celui-ci. J'ai ajouté cela en raison de la variété des extensions de fichier indiquées par l'OP. Je pensais que ce serait plus d'une "garantie de ne pas jouer avec le fichier" réponse. – Joseph

+0

presque 7 ans plus tard ... merci – elmer007

8

Malheureusement, la façon de faire cela change avec le type de fichier.

La meilleure option est de vérifier la propriété ProcessStartInfo.Verbs pour un verbe connu pour votre type de fichier. C'est typiquement "OpenAsReadOnly". Vous devez ensuite définir ce verbe et lancer le processus avec un ProcessStartInfo. Il suffit de réaliser - cela ne fonctionne pas pour chaque type de fichier, car c'est au programme de fournir et de gérer un verbe approprié.

1

Process.Start commence tout programme est associé à ce fichier. Vous ne pouvez pas lui demander d'ouvrir le fichier en lecture seule, sauf si le programme prend en charge un argument de ligne de commande pour indiquer qu'il doit s'ouvrir en lecture seule (ou s'il prend en charge le verbe OpenAsReadOnly).

Vous pouvez définir les attributs de fichiers sur le fichier en lecture seule avant de l'ouvrir, mais je ne pense pas que ce soit ce que vous voulez.

0

Cela dépend si l'application enregistrée a commutateur/option pour supporter le mode lecture seule. Si c'est le cas, vous pouvez passer l'option en lecture seule. Pour votre cas, je ne pense pas que Process.Start peut si aucune option en lecture seule.

2

Pouvez-vous copier le fichier dans un emplacement temporaire, puis utiliser le fichier temporaire pour lancer le programme?

Ensuite, vous pouvez suivre le processus et à sa sortie, supprimez le fichier temp?

Questions connexes