繁体   English   中英

以只读方式打开文件

[英]Open file read-only

在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不会。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM