Обработка зашифрованных файлов и каталогов

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

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

Функции шифрования нельзя использовать с API резервного копирования.

Чтобы зашифровать новый файл, используйте функцию CreateFile с флагом FILE_ATTRIBUTE_ENCRYPTED . Чтобы зашифровать существующий файл, используйте функцию EncryptFile . Все потоки данных в файле шифруются. Если файл уже зашифрован, EncryptFile ничего не делает, но возвращает ненулевое значение, указывающее на успешное выполнение. Если файл сжат, EncryptFile распаковывает файл перед его шифрованием.

Чтобы расшифровать зашифрованный файл, используйте функцию DecryptFile . Если файл не зашифрован, DecryptFile ничего не делает, но возвращает ненулевое значение, указывающее на успешное выполнение.

Функция EncryptionDisable отключает или включает шифрование указанного каталога и файлов в нем. Это не влияет на шифрование подкаталогов ниже указанного каталога.

Чтобы получить состояние шифрования файла, используйте функцию FileEncryptionStatus . Кроме того, можно вызвать функцию GetFileAttributes и проверить флаг FILE_ATTRIBUTE_ENCRYPTED в возвращаемом значении.

CopyFile и CopyFileEx пытаются зашифровать целевой файл с помощью ключей, используемых при шифровании исходного файла. Если это не удается сделать, обе функции пытаются зашифровать целевой файл с помощью ключей по умолчанию. Если оба этих метода не удается выполнить, copyFile и CopyFileEx завершаются ошибкой ERROR_ENCRYPTION_FAILED . Если вы хотите, чтобы copyFileEx завершил операцию копирования, даже если целевой файл не может быть зашифрован, включите флаг COPY_FILE_ALLOW_DECRYPTED_DESTINATION в значение параметра dwCopyFlags в вызове CopyFileEx.