在C#WinForms应用程序中,我使用System.IO.Diagnostics.Process.Start(fileName)来打开文件。文件类型可以是.doc,.docx,.xls,.xlsx,.csv,.pdf或.txt。
有没有办法强制这些文件以只读方式打开?
答案 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不会。