[英]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.