Открытый файл, только для чтения

Я думаю, что причина, по которой параметры строки запроса не переопределяют значения по умолчанию, заключается в том, чтобы не дать людям взломать URL.

Кто-то может использовать URL-адрес, строка запроса которого содержит контроллер, действие или другие значения по умолчанию, которые вы не хотели, чтобы они меняли.

Я справился с этой проблемой, выполнив то, что предложил @ Dale-Ragan, и применил ее в методе действий. Работает для меня.

5
задан Sesame 26 October 2009 в 17:20
поделиться

5 ответов

Вам необходимо установить атрибуты файла перед запуском процесса, а затем вернуть их при открытии.

Пример:

var attributes = File.GetAttributes(path);

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

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

File.SetAttributes(filePath, attributes);

Примечание: Это изменит файл атрибуты фактического файла, так что имейте это в виду.

13
ответ дан 18 December 2019 в 06:35
поделиться

К сожалению, способ выполнения этой операции зависит от типа файла.

Лучший вариант - проверить свойство ProcessStartInfo.Verbs на наличие известного глагола для вашего тип файла. Обычно это OpenAsReadOnly. Затем вы задаете этот глагол и запускаете процесс с ProcessStartInfo .

Просто поймите - это работает не для всех типов файлов, так как программа предоставляет и обрабатывает соответствующий глагол.

8
ответ дан 18 December 2019 в 06:35
поделиться

Можете ли вы скопировать файл во временное место, а затем использовать временный файл для запуска программы?

Затем вы могли бы отслеживать процесс и после его выхода удалить временный файл?

2
ответ дан 18 December 2019 в 06:35
поделиться

Process.Start запускает любую программу, связанную с этим файлом. Вы не можете указать ему открыть файл только для чтения, если программа не поддерживает аргумент командной строки, указывающий, что он должен открываться только для чтения (или если он поддерживает команду OpenAsReadOnly).

Вы можете установить атрибуты файла на файл только для чтения перед его открытием, но я не думаю, что это то, что вам нужно.

1
ответ дан 18 December 2019 в 06:35
поделиться

Зависит от того, имеет ли зарегистрированное приложение переключатель / параметр для поддержки режима только для чтения. Если это так, вы можете передать параметр только для чтения. В вашем случае я не думаю, что Process.Start может работать, если нет опции только для чтения.

0
ответ дан 18 December 2019 в 06:35
поделиться
Другие вопросы по тегам:

Похожие вопросы: