以只读方式打开文件

时间:2009-10-26 17:20:57

标签: c# winforms readonly

在C#WinForms应用程序中,我使用System.IO.Diagnostics.Process.Start(fileName)来打开文件。文件类型可以是.doc,.docx,.xls,.xlsx,.csv,.pdf或.txt。

有没有办法强制这些文件以只读方式打开?

5 个答案:

答案 0 :(得分:11)

您需要在启动进程之前设置文件的文件属性,然后在打开时将其设置回来。

示例:

var attributes = File.GetAttributes(path);

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

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

File.SetAttributes(filePath, attributes);

注意:这会更改实际文件的文件属性,因此请记住这一点。

答案 1 :(得分:8)

不幸的是,执行此操作的方式随文件类型而变化。

最好的选择是检查ProcessStartInfo.Verbs属性是否有针对您的文件类型的已知动词。这通常是“OpenAsReadOnly”。然后,您可以设置该动词,并使用ProcessStartInfo开始此过程。

只是意识到 - 这不适用于所有类型的文件,因为它取决于程序提供和处理适当的动词。

答案 2 :(得分:2)

您可以将文件复制到临时位置,然后使用临时文件启动程序吗?

然后你可以监控进程并在退出时删除临时文件吗?

答案 3 :(得分:1)

Process.Start启动与该文件关联的任何程序。您不能指示它以只读方式打开文件,除非程序支持命令行参数以指示它应该以只读方式打开(或者如果它支持OpenAsReadOnly动词)。

您可以在打开文件之前将文件属性设置为只读,但我认为这不是您想要的。

答案 4 :(得分:0)

取决于注册的应用程序是否具有支持只读模式的开关/选项。如果是这样,您可以传入只读选项。对于您的情况,如果没有只读选项,我认为Process.Start不会。