2015-08-26 6 views
1

Я делаю небольшой проект. это приложение Windows Form. Я получил некоторые источники в папке (C:/sources). Когда моя программа запускается, она использует источники из папки. В настоящее время я могу редактировать папку с помощью проводника Windows, это может вызвать ошибки для моей программы. Поэтому я хочу заблокировать папку (C:/sources) от редактирования/переименования/удаления во время моей программы. Как это сделать?C# - Блокировка папок от редактирования

EDIT; Можно показать сообщение, как это, когда пользователь попытался изменить папку:

«действие не может быть завершена, поскольку папка или файл в нем открыт в другой программе»

программа, которая мы говорим о шахте.

ответ

0

Есть несколько подходов, которые вы могли бы Venture, и они различаются по сложности реализации. Все зависит от того, насколько важна эта задача для вас. Но, прежде чем обсуждать эти варианты; не можете ли вы вставлять эти ресурсы в ваше приложение WinForms? Если это не вариант, то вы можете сделать одно из следующих действий:

  1. Написать драйвер устройства, который может запретить доступ таких ресурсов, если ваше приложение работает. В этом подходе есть недостатки. Например, вы можете олицетворять свое приложение с тем же именем. Но я не получаю слишком много деталей, пытаясь нарушить любой подход, поскольку я пытаюсь решить возможные решения текущей проблемы. Существуют различные типы драйверов, которые вы можете рассмотреть. Вероятно, самой простой формой этого подхода было бы внедрение драйвера мини-фильтра.

  2. Крюк некоторые API, как CreateFile(), NtCreateFile(), ZwCreateFile() хотя есть много способов обойти такой механизм защиты. Но, опять же, мы просто решаем, что вы можете сделать, чтобы устранить это ограничение.

  3. Открыть эти ресурсы прямо из приложения и заблокировать его. Например:
    File.Open("test.txt", FileMode.Open, FileAccess.Read, FileShare.None);
    , так как это приведет к тому, что люди получат сообщение, которое вы желаете, если попытаетесь открыть файл.

Возможно, вы сможете больше узнать о том, что такое эти ресурсы, и мы сможем помочь вам определить, какой способ защитить ваши файлы разумным способом?

0

Хотя я не считаю, что лучше всего иметь файлы, которые имеют решающее значение для приложения в открытой области, такой как диск C: я бы посмотрел права на файлы NTFS и установил папка только для чтения, но это не остановит административных пользователей

Посмотрите эти две позиции ц

restrict access to folder outside of program c#

Setting NTFS permissions in C#.NET

+0

Hey Wamadahama, спасибо за советы, я пытаюсь найти решение для решения этой проблемы, я думаю об этом сообщении в Windows Explorer «действие не может быть выполнено, потому что папка или файл в ней открыт в другой программе ", есть ли другие решения? –

+0

Возможно, было бы лучше разместить файлы в менее доступном месте, например% appdata%, однако это сообщение удержит его от его открытия – Wamadahama

Смежные вопросы