在一个C# WinForms应用程序中,我使用System.IO.Diagnostics.Process.Start(fileName)打开文件。这些文件的类型可以是.doc、.docx、.xls、.xlsx、.csv、.pdf或.txt。是否有办法强制这些文件只能以只读方式打开?
在开始处理文件之前,您需要设置文件的属性,然后在打开它时将它们设置回来。
示例:
var attributes = File.GetAttributes(path);
File.SetAttributes(filePath, attributes | FileAttributes.ReadOnly);
System.IO.Diagnostics.Process.Start(fileName);
File.SetAttributes(filePath, attributes);
注意:这将更改实际文件的属性,请记住这一点。
不幸的是,对于不同类型的文件,处理方式也不同。
最好的选择是检查ProcessStartInfo.Verbs属性,以获取文件类型的已知动词。这通常是“OpenAsReadOnly”。然后设置该动词,并使用ProcessStartInfo启动进程。
请注意 - 由于程序是否提供并处理适当的动词取决于文件类型,因此这种方法并不适用于所有类型的文件。
Process.Start会启动与该文件关联的任何程序。除非该程序支持命令行参数来指示它应该以只读模式打开(或者如果它支持OpenAsReadOnly动作),否则您无法指示它以只读模式打开文件。
在打开文件之前,您可以将文件属性设置为只读,但我认为这不是您想要的。
这取决于注册应用程序是否具有支持只读模式的开关/选项。如果是这样,您可以传递只读选项。对于您的情况,我认为Process.Start无法使用没有只读选项。