Раймонд Чен из Microsoft недавно написал статью, которая тесно связана: Чтобы запретить людям копировать файлы в папку, нужно использовать безопасность NTFS, а не блокировать перетаскивание . Хотя в этой статье упоминается попытка помешать кому-либо скопировать файл в определенную папку, вы можете использовать представленное решение, чтобы решить вашу проблему здесь.
Чтобы должным образом защитить файл и предотвратить подделку, вы можете настроить ACL для файла так, чтобы он имел разрешения на чтение, но запрещал разрешения на запись, удаление и изменение. Вы можете установить это для конкретного пользователя, группы или даже каждого! Владелец файла будет всегда иметь разрешение на изменение разрешений, поэтому вы не можете постоянно блокировать себя (даже если вы пытаетесь запретить специальный объект CREATOR OWNER
). Имейте в виду, что для того, чтобы установить их вручную из диалогового окна безопасности, вам нужно будет войти в область расширенных прав доступа, они не доступны на стандартной странице. Возможно, вы также захотите нарушить наследование, чтобы у файла были только те права доступа, которые вы установили, и ни одного из его родительских прав.
В этом случае было бы лучше использовать опции, которые уже есть, и поэтому вам не придется пытаться взломать систему, чтобы заставить ее работать. NTFS имеет надежную защиту и может выполнять то, что вы хотите, без написания кода. Вы также можете работать с безопасностью напрямую через WINAPI, используя методы, связанные с Защита файлов и Права доступа (MSDN) . Вы можете предоставить разрешения при вызове первого CreateFile
или изменить разрешения по факту, используя SetNamedSecurityInfo или SetSecurityInfo .
РЕДАКТИРОВАТЬ: Чтобы решить проблемы, связанные с вредоносными программами, вы даже можете запретить доступ SYSTEM
, чтобы даже службы, работающие под системной учетной записью, не могли удалить или записать в нее. Я действительно позаботился об одном противном вирусе в этом методе. он будет продолжать создавать каталог, поэтому я загрузил PE, очистил каталог, а затем запретил всем доступ к нему, включая учетную запись SYSTEM
. Вирус не мог распространяться, пока я работал над его удалением.