ファイルの暗号化と解読          <TOP>


EncryptFile ファイルまたはディレクトリを暗号化する
DecryptFile 暗号化されたファイルまたはディレクトリを解読
 

 

他のユーザーが暗号化されたファイルにアクセスしようとした場合アクセスが拒否されます。

 

'================================================================
'= ファイルの暗号化と解読
'=    (EncryptFile.bas)
'================================================================
#include "Windows.bi"

' ファイルまたはディレクトリを暗号化する。ファイルのデータストリームはすべて暗号化。暗号化されたディレクトリ内で新しく作成するファイルはすべて暗号化される
Declare Function Api_EncryptFile& Lib "advapi32" Alias "EncryptFileA" (ByVal lpFileName$)

' 暗号化されたファイルまたはディレクトリを解読
Declare Function Api_DecryptFile& Lib "advapi32" Alias "DecryptFileA" (ByVal lpFileName$, ByVal dwReserved&)

Var Shared Edit1 As Object
Var Shared Text1 As Object
Var Shared Text2 As Object
Var Shared Button1 As Object
Var Shared Button2 As Object

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

Var Shared FileName As String

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

    'ファイルが選択されているときは
    If Len(FileName) Then
        '対象のファイル名を指定
        FileName = Edit1.GetWindowText

    'ファイルが選択されていないときは
    Else
        Text2.SetWindowText "ファイルを選択してください!"
        Exit Sub
    End If

    '暗号化を設定
    Ret = Api_EncryptFile(FileName)

    '設定できたときは
    If Ret <> 0 Then
        Text2.SetWindowText "設定しました。"
    End If
End Sub

'================================================================
'=
'================================================================
Declare Sub Button2_on edecl ()
Sub Button2_on()
    Var Ret As Long

    'ファイルが選択されているときは
    If Len(FileName) Then
        '対象のファイル名を指定
        FileName = Edit1.GetWindowText

    'ファイルが選択されていないときは
    Else
        Text2.SetWindowText "ファイルを選択してください!"
        Exit Sub
    End If

    '暗号化を設定
    Ret = Api_DecryptFile(FileName, 0)

    '設定できたときは
    If Ret <> 0 Then
        Text2.SetWindowText "解除しました。"
    End If
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