簡體   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