暗号化されたファイルとディレクトリの処理

プログラマまたはユーザーは、ディレクトリまたはファイルを暗号化済みとしてマークできます。 暗号化済みとしてマークされたファイルは、現在の暗号化ドライバーを使用して NTFS ファイル システムによって暗号化されます。 後日、ファイルが暗号化されていないとマークされている場合は、暗号化が解除され、プレーン テキスト (セキュリティで保護されていない) 状態になります。

ディレクトリ自体は暗号化されません。 代わりに、既定では、"暗号化された" ディレクトリでは、ディレクトリ内のすべての新しいファイルが作成時に暗号化されます。 ユーザーがファイルを暗号化したくない場合、ユーザーは新しいファイルの状態を暗号化解除済みに具体的に変更する必要があります。 暗号化されたディレクトリが表示されます。 他のユーザーがディレクトリにアクセスできないようにするには、標準のアクセス制御方法を使用します。

暗号化関数は 、Backup API では使用できません。

新しいファイルを暗号化するには、FILE_ATTRIBUTE_ENCRYPTED フラグを指定して CreateFile 関数を使用します。 既存のファイルを暗号化するには、 EncryptFile 関数を使用します。 ファイル内のすべてのデータ ストリームが暗号化されます。 ファイルが既に暗号化されている場合、 EncryptFile は何も行いませんが、成功を示す 0 以外の値を返します。 ファイルが圧縮されている場合、 EncryptFile は暗号化する前にファイルを圧縮解除します。

暗号化されたファイルの暗号化を解除するには、 DecryptFile 関数を使用します。 ファイルが暗号化されていない場合、 DecryptFile は何も行いませんが、成功を示す 0 以外の値を返します。

EncryptionDisable 関数は、指定されたディレクトリとその中のファイルの暗号化を無効または有効にします。 指定されたディレクトリの下にあるサブディレクトリの暗号化には影響しません。

ファイルの暗号化状態を取得するには、 FileEncryptionStatus 関数を 使用します。 または、 GetFileAttributes 関数を呼び出し、戻り値の FILE_ATTRIBUTE_ENCRYPTED フラグを調べます。

CopyFileCopyFileEx は 、コピー元ファイルの暗号化に使用されるキーを使用して、コピー先ファイルの暗号化を試みます。 これができない場合、両方の関数は既定のキーを使用して宛先ファイルの暗号化を試みます。 これらの両方のメソッドを実行できない場合、CopyFile と CopyFileExERROR_ENCRYPTION_FAILED エラーで失敗します。 コピー先ファイルを暗号化できない場合でも CopyFileEx でコピー操作を完了させる場合は、CopyFileEx の呼び出しで dwCopyFlags パラメーターの値に COPY_FILE_ALLOW_DECRYPTED_DESTINATION フラグを含めます。