指定したファイルの暗号化情報を取得          <TOP>


FileEncryptionStatus 指定したファイルの暗号化情報を取得
 

例では、EditBoxに選択したファイルをドラッグ&ドロップし、情報を取得しています。

 
'================================================================
'= 指定したファイルの暗号化情報を取得
'=    (FileEncryptionStatus.bas)
'================================================================
#include "Windows.bi"

' 指定したファイルの暗号化情報を取得
Declare Function Api_FileEncryptionStatus& Lib "advapi32" Alias "FileEncryptionStatusA" (ByVal lpFileName$, lpStatus&)

#define FILE_ENCRYPTABLE 0              '暗号化できる
#define FILE_IS_ENCRYPTED 1             '暗号化されている
#define FILE_SYSTEM_ATTR 2              'システムファイルは暗号化できない
#define FILE_ROOT_DIR 3                 'ルートディレクトリは暗号化できない
#define FILE_SYSTEM_DIR 4               'システムディレクトリは暗号化できない
#define FILE_UNKNOWN 5                  '暗号化情報は不明
#define FILE_SYSTEM_NOT_SUPPORT 6       'ファイルシステムが暗号化をサポートしていない
#define FILE_USER_DISALLOWED 7          '暗号化情報は将来のために予約
#define FILE_READ_ONLY 8                'ファイルは読み取り専用
#define FILE_DIR_DISALLOWED 9           'ディレクトリ暗号化抑制中は暗号化不能を示す

Var Shared Edit1 As Object
Var Shared Text1 As Object
Var Shared Button1 As Object

Edit1.Attach GetDlgItem("Edit1") : Edit1.SetFontSize 12
Text1.Attach GetDlgItem("Text1") : Text1.SetFontSize 12
Button1.Attach GetDlgItem("Button1") : Button1.SetFontSize 14

Var Shared FileName As String

'================================================================
'=
'================================================================
Declare Sub Button1_on edecl ()
Sub Button1_on()
    Var TargetStatus As Long
    Var Ret As Long

    'ファイルの暗号化状態を取得
    Ret = Api_FileEncryptionStatus(FileName, TargetStatus)

    ' 暗号化状態を表示
    Select Case TargetStatus
        '暗号化可能のときは
        Case FILE_ENCRYPTABLE
            Text1.SetWindowText "暗号化できます。"
        '暗号化済みのときは
        Case FILE_IS_ENCRYPTED
            Text1.SetWindowText "暗号化されています。"
        'システムファイルのときは
        Case FILE_SYSTEM_ATTR
            Text1.SetWindowText "システムファイルは" & Chr$(13, 10) & "暗号化できません。"
        'ルートディレクトリのときは
        Case FILE_ROOT_DIR
            Text1.SetWindowText "ルートディレクトリは" & Chr$(13, 10) & "暗号化できません。"
        'システムディレクトリのときは
        Case FILE_SYSTEM_DIR
            Text1.SetWindowText "システムディレクトリは" & Chr$(13, 10) & "暗号化できません。"
        '暗号化状態が不明のときは
        Case FILE_UNKNOWN
            Text1.SetWindowText "暗号化状態は不明です。"
        '暗号化非サポートのときは
        Case FILE_SYSTEM_NOT_SUPPORT
            Text1.SetWindowText "暗号化はサポートされていません。"
        '読み取り専用のときは
        Case FILE_READ_ONLY
            Text1.SetWindowText "読み取り専用は" & Chr$(13, 10) & "暗号化できません。"
        'ディレクトリ暗号化抑制中のときは
        Case FILE_DIR_DISALLOWED
            Text1.SetWindowText "暗号化抑制中は" & Chr$(13, 10) & "暗号化できません。"
        'その他のときは
        Case Else
            Text1.SetWindowText "暗号化情報は判定できません。"
    End Select
End Sub

'================================================================
'= シェルドロップされたファイル名を取得
'================================================================
Declare Sub Edit1_DropFiles edecl (ByVal DF As Long)
Sub Edit1_DropFiles(ByVal DF As Long)
    Var CN As Long

    CN = GetDropFileCount(DF)
    FileName = GetDropFileName(DF, 0)
    Edit1.SetWindowtext FileName
End Sub
'================================================================
'=
'================================================================
While 1
    WaitEvent
Wend
Stop
End