Как предотвратить копирование или вырезание файла в файловой системе Windows? - PullRequest
2 голосов
/ 18 февраля 2010

Я хочу, чтобы exe-файл не мог быть скопирован или вырезан из файловой системы Windows для вставки куда-либо.

Отлично сделано в C #. который должен быть только на одном ПК.

Я работал с FileSystemWatcher , NSIS , Буфер обмена . но для всего мне нужно определить, копируется ли этот файл.

Я также видел 'Предотвратить' (http www free-download-blog.com disable-cut-paste-copy-delete-rename-functions-using-предотвращать), но мне нужно предотвратить только этот конкретный exe от копирования или вырезания.

Любой указатель или идея поможет.

Ответы [ 6 ]

2 голосов
/ 18 февраля 2010

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

Хорошее чтение: Пост Раймонда и его комментарии по предотвращению копирования .

1 голос
/ 17 ноября 2014

Как и предполагали другие, вы не сможете так легко отключить режим копирования / вырезания.
Альтернативой может быть отключение выполнения скопированных версий .
В вашем исполняемом файле вы можете проверить много вещей, таких как:

  • Путь к текущему исполняемому файлу явно указан как your_path
  • Имя машины и пользователя - это то, что вы авторизуете

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

1 голос
/ 18 февраля 2010

Ну, это сложная проблема. Даже если у вас есть файл explorer.exe для отключения функции «вырезать и вставить», что мешает пользователю использовать командное окно? Или написание собственного exe для этого? Загрузка в Linux и чтение его?

Тем не менее, у вас есть несколько вариантов (скорее всего, будет больше), которые вы можете попробовать:

  • Используйте правильные разрешения: Установите разрешения такие, что пользователи, которые Вы не хотите вырезать и вставить не можете читать файл.

  • Напишите драйвер устройства, который может подключаться на вызовы файловой системы и сделать это для вас.

  • Зашифровать файл.

И некоторые хакерские опции, такие как:

  • Используйте regkey APPINIT_DLLS, чтобы поместить свою собственную dll для загрузки в каждый процесс (хотя я не уверен, будет ли это работать с консольным процессом). Затем при загрузке DLL выполните перехват IAT, чтобы заменить вызовы файла kernel32.dll.

  • Замените kernel32.dll вашей собственной версией. Возможно, придется немного поработать с форматом PE и т. Д.

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

0 голосов
/ 25 ноября 2017

Настройка переменной ENVIRONMENT на вашем компьютере

В вашем коде добавьте чек if (Переменная ENVIRONMENT == «То же, что определено») // Выполнить код еще // Приостановить выполнение

0 голосов
/ 08 сентября 2013

Если вы можете полностью запретить проводнику копировать или перемещать файлы, тогда все, что вам нужно, - это стороннее программное обеспечение для копирования файлов (но убедитесь, что оно может фильтровать расширения файлов), например, Copy Handler

0 голосов
/ 18 февраля 2010

Любой локальный администратор сможет отменить все, что вы делаете, чтобы предотвратить копирование. Я могу в значительной степени гарантировать, что программа на той странице, о которой вы упомянули, использует сервис или фоновый процесс для предотвращения копирования и вставки и поэтому легко обходится. Если ваши пользователи находятся в закрытой среде, где никто из них не является администратором и у них очень ограниченные права на свои ПК, у вас есть шанс.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...