-->

Membuat Hide dan Un-hide Folder dengan Password di VB.NET


Membuat Hide dan Un-hide Folder dengan Password di VB.NET - Selamat malam para sahabat blogger semuanya. Berjumpa lagi dengan saya guzko di blog tutorial saya yang sederhana ini. Mudah-mudahan sahabat blogger bisa menemukan manfaat dan inspirasi di blog saya ini.

Sesuai judul Membuat Hide dan Un-hide Folder dengan Password di VB.NET, kali ini saya akan mencoba untuk membagikan tutorial bagi sahabat blogger tentang bagaimana caranya menyembunyikan folder dengan menggunakan aplikasi. Berikut dibawah ini adalah sekilas penampakan dari aplikasinya :



bagaimana sahabat blogger apakah tertarik untuk membuatnya ? Jika iya, mari kita ikuti langkah dibawah ini untuk membuat aplikasi seperti itu :

(Baca Juga : Enkripsi dan Dekripsi Text dengan VB.Net)

Buka Visual Studio
Buka visual studio sahabat dan buat sebuah project baru. Pada aplikasi ini kita membuat 3 form, sahabat bisa desain form-form nya seperti gambar dibawah ini :




berikut komponen-komponen yang saya gunakan untuk semua form diatas, biar sahabat blogger lebih jelas :

Form Komponen Property Name Keterangan
Form1 Folder Browser Dialog FolderBrowserDialog1 Digunakan untuk melakukan pemilihan folder yang akan di-hide dan un-hide
Tool Strip ToolStrip1 Untuk menu yang digunakan pada aplikasi. Pada toolstrip1 ini terdapat menu (1. Hide Folder 2.Un-hide Folder 3.Set Password)
Data Grid dgFolder Digunakan untuk menampilkan data-data dari folder yang telah disembunyikan
frmPass Textbox txtPass Digunakan untuk input password pada saat pertama aplikasi dijalankan
frmSetPass Textbox txtPass Digunakan untuk menginputkan password baru
txtConfirmPass Digunakan untuk konfirmasi password
Label Label2 Digunakan sebagai menu keluar dari frmSetPass

itulah komponen-komponen yang saya gunakan pada pembuatan aplikasi ini. Semoga para sahabat blogger bisa memahami dan mengerti. Baiklah setelah kita selesai mendesign dari aplikasi yang kita buat, sekarang kita lanjutkan kedalam tahap coding.

Tahap Peng-codingan
Form1

pada form ini, kita import dulu reference yang akan digunakan seperti dibawah ini :
Imports Microsoft.VisualBasic.FileIO
Imports System.IO

kemudian dilanjutkan dengan membuat global variabel pada form1 ini :
Dim folderHide As String
    Dim HiddenTable As New DataTable
    Dim PFile As String = Environment.CurrentDirectory & "\" & "Password.txt"
PFile diatas adalah link atau lokasi dari file text yang akan dibuat otomatis oleh aplikasi untuk menyimpan password user.

Sekarang kita buat dulu fungsi-fungsi yang akan kita gunakan pada aplikasi ini. Fungsi yang pertama ini adalah fungsi untuk menyimpan/menghapus data yang terdapat pada file.txt yang akan dibuat otomatis oleh aplikasi ini. Seperti contoh, jika misalkan sahabat melakukan hide folder, maka path dari hide folder itu akan disimpan pada *.txt ini. Berikut code fungsinya :
Sub StoreToFile()
        Dim FileToStore As String = Environment.CurrentDirectory & "\" & "LockedFiles.txt"
        Dim tempString As New System.Text.StringBuilder

        Dim iEnu As IEnumerator = HiddenTable.Rows.GetEnumerator
        Dim DRow As DataRow

        While iEnu.MoveNext
            DRow = CType(iEnu.Current, DataRow)
            tempString.AppendLine(DRow.Item(0))

        End While

        My.Computer.FileSystem.WriteAllText(FileToStore, tempString.ToString, False)


    End Sub

fungsi dibawah ini untuk menambahkan data kedalam datagrid :
Sub AddToTable()

        Dim AddRow As DataRow = HiddenTable.NewRow()

        AddRow.Item(0) = folderHide
        AddRow.Item(1) = False

        HiddenTable.Rows.Add(AddRow)

    End Sub
Sub AddToTable(ByVal ToReadFromFile As String)
        Dim AddRow As DataRow

        Dim fs As New System.IO.FileStream(ToReadFromFile, IO.FileMode.Open, IO.FileAccess.Read)
        Dim d As New System.IO.StreamReader(fs)
        d.BaseStream.Seek(0, IO.SeekOrigin.Begin)

        While d.Peek() > -1

            AddRow = HiddenTable.NewRow()
            AddRow.Item(0) = d.ReadLine
            AddRow.Item(1) = False

            HiddenTable.Rows.Add(AddRow)
        End While

        d.Close()

    End Sub

Fungsi dibawah ini adalah untuk mengatur datagrid yang digunakan, codenya seperti dibawah ini :
Sub gridD()

        With dgFolder
            .RowHeadersWidth = 20
            .ColumnHeadersHeight = 35

            .ColumnHeadersDefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter
            .ColumnHeadersDefaultCellStyle.Font = New Font("Tahoma", 9)
            .AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill


            .Columns(0).Width = 200
            .Columns(1).Width = 50
        End With

    End Sub

setelah selesai membuat fungsi-fungsinya, sekarang klik 2x pada form1 dan pindahkan ke event shown, inputkan kode seperti ini :
If System.IO.File.Exists(PFile) Then
            If frmPass.ShowDialog() = Windows.Forms.DialogResult.Cancel Then
                End
            End If
        Else
            MsgBox("Ini mungkin pertama kalinya anda menggunakan aplikasi ini atau mungkin file yang dibutuhkan telah hilang. Gunakan password standar 12345 untuk membuka aplikasi setelah itu silahkan anda ganti password untuk keamanan", vbExclamation, "Guzko Tutorial")
            If frmPass.ShowDialog() = Windows.Forms.DialogResult.Cancel Then
                End
            End If
        End If

        'membuat kolom untuk data table
        Dim HiddenFolders As New DataColumn("HiddenFolders")
        HiddenFolders.DataType = System.Type.GetType("System.String")

        Dim Unhide As New DataColumn("Unhide")
        Unhide.DataType = System.Type.GetType("System.Boolean")

        HiddenTable.Columns.Add(HiddenFolders)
        HiddenTable.Columns.Add(Unhide)

        dgFolder.DataSource = HiddenTable
        If System.IO.File.Exists(Environment.CurrentDirectory & "\" & "LockedFiles.txt") Then
            Me.AddToTable(Environment.CurrentDirectory & "\" & "LockedFiles.txt")
        End If

        Me.gridD()
code diatas, jika user menjalankan aplikasi ini, maka pertama kali aplikasi akan mengecek keberadaan file "password.txt". Jika seandainya file tersebut ditemukan oleh system, maka akan tampil frmPass, namun jika tidak, user akan diinfokan oleh system untuk menginputkan password standar.

Setelah itu kita lanjutkan dengan, klik 2x pada menu hide folder dan inputkan kode dibawah ini :
If FolderBrowserDialog1.ShowDialog = Windows.Forms.DialogResult.OK Then
            folderHide = FolderBrowserDialog1.SelectedPath.TrimEnd
            'sizeFolder = GetFolderSize(folderHide)

            Dim ToHideDir As New System.IO.DirectoryInfo(folderHide)
            ToHideDir.Attributes = IO.FileAttributes.Hidden

            Me.AddToTable()
        End If

lanjutkan dengan pada menu un-hide folder, inputkan kode dibawah ini :
Dim RowsToDelete As New List(Of Int16)
        Dim iEn As IEnumerator = HiddenTable.Rows.GetEnumerator

        Dim RowNo As Int16 = -1
        While iEn.MoveNext
            RowNo = RowNo + 1

            Dim FolderPath As String = CType(iEn.Current, DataRow).Item(0)
            Dim Unhide As Boolean = CType(iEn.Current, DataRow).Item(1)
            If Unhide = True Then
                Dim ToHideDir As New System.IO.DirectoryInfo(FolderPath)
                ToHideDir.Attributes = ToHideDir.Attributes And Not IO.FileAttributes.Hidden

                RowsToDelete.Add(RowNo)

            End If

        End While


        RowsToDelete.Reverse()

        For i As Int16 = 0 To RowsToDelete.Count - 1
            HiddenTable.Rows.RemoveAt(RowsToDelete(i))
        Next i
        Me.StoreToFile()
    End Sub

Klik 2x pada datagrid dan inputkan kode dibawah ini :
If e.ColumnIndex = 1 Then
            If HiddenTable.Rows(e.RowIndex).Item(1) = True Then
                HiddenTable.Rows(e.RowIndex).Item(1) = False
            Else
                HiddenTable.Rows(e.RowIndex).Item(1) = True
            End If
        End If

oke peng-codingan pada form1 ini telah selesai. Sekarang kita lanjutkan ke bagian frmPass.

Peng-codingan frmPass

buat global variable seperti dibawah ini:
Dim PFile As String = Environment.CurrentDirectory & "\" & "Password.txt"

kemudian klik 2x pada txtPass dan pindahkan ke event KeyDown, inputkan kode dibawah ini :
If e.KeyCode = Keys.Enter Then
            Static count As Int16 = 0

            If System.IO.File.Exists(PFile) Then
                Dim pesanDekrip As String
                Dim fileContent As String = My.Computer.FileSystem.ReadAllText(PFile)
                Dim byt As Byte() = Convert.FromBase64String(fileContent)
                pesanDekrip = System.Text.Encoding.UTF8.GetString(byt)
                If pesanDekrip = txtPass.Text.Trim Then
                    Me.DialogResult = System.Windows.Forms.DialogResult.OK
                    Me.Close()
                Else
                    count += 1
                    MsgBox("password anda salah. anda telah salah sebanyak : " & count & " .Sisa kesempatan anda : " & 3 - count & ". Salah 3x maka program otomatis exit", vbCritical, "Guzko Tutorial")
                    If count >= 3 Then
                        End
                    End If

                End If
            Else
                If txtPass.Text = "12345" Then
                    Me.DialogResult = System.Windows.Forms.DialogResult.OK
                    Me.Close()
                End If
            End If
        End If
pada kode diatas, jika user menekan enter di keyboard pada txtPass, maka system akan melakukan pengecekan apakah file password.txt terdapat atau tidak. Jika terdapat file password.txt, maka password yang terapat pada file text tersebut akan di-dekripsi terlebih dahulu. Jika seandainya user salah menginputkan password sebanyak 3x maka aplikasi otomatis keluar.

untuk peng-codingan pada frmPass, hanya itu saja, sekarang kita lanjutkan coding ke frmSetPass.

Peng-codingan frmSetPass

buat global variable seperti berikut ini:
Dim PFile As String = Environment.CurrentDirectory & "\" & "Password.txt"
    Dim passEnkrip As String

klik 2x pada txtPass dan pindahkan ke event keydown serta inputkan kode dibawah ini :
If e.KeyCode = Keys.Enter Then
            If txtPass.Text = "" Then
                MsgBox("Silahkan inputkan password anda", vbCritical, "Guzko Tutorial")
                txtPass.Focus()
                Exit Sub
            ElseIf txtPassConfirm.Text = "" Then
                MsgBox("Silahkan inputkan sekali password anda", vbCritical, "Guzko Tutorial")
                txtPassConfirm.Focus()
                Exit Sub
            ElseIf txtPassConfirm.Text <> txtPass.Text = "" Then
                MsgBox("password yang anda inputkan tidak cocok. silahkan ulangi", vbCritical, "Guzko Tutorial")
                txtPass.Clear()
                txtPassConfirm.Clear()
                txtPass.Focus()
            Else
                Try
                    If System.IO.File.Exists(PFile) Then
                        My.Computer.FileSystem.WriteAllText(PFile, txtPassConfirm.Text, True)
                    Else
                        System.IO.File.Create(Environment.CurrentDirectory & "\" & "Password.txt").Dispose()
                        My.Computer.FileSystem.WriteAllText(PFile, txtPassConfirm.Text.Trim, True)
                    End If

                Catch ex As Exception
                    MsgBox("Terjadi kesalahan : " & ex.Message, vbCritical, "Guzko Tutorial")
                End Try
                Me.Close()
            End If
        End If

klik juga 2x pada txtConfirmPass dan pindahkan juga ke event keydown dan inputkan kode dibawah ini :
If e.KeyCode = Keys.Enter Then
            If txtPassConfirm.Text = "" Then
                MsgBox("silahkan inputkan password anda sekali lagi", vbCritical, "Guzko Tutorial")
                txtPassConfirm.Focus()
                Exit Sub
            ElseIf txtPassConfirm.Text <> txtPass.Text Then
                MsgBox("password yang anda inputkan tidak sama", vbCritical, "Guzko Tutorial")
                txtPass.Clear()
                txtPassConfirm.Clear()
                txtPass.Focus()
                Exit Sub
            Else
                Try
                    If System.IO.File.Exists(PFile) Then
                        Dim pesan As Integer
                        pesan = MsgBox("Apakah anda yakin ingin meng-update password yang ada ?", vbQuestion + vbYesNo, "Guzko Tutorial")
                        If pesan = vbYes Then
                            'menghapus file pfile
                            My.Computer.FileSystem.DeleteFile(PFile)
                            'buat file pfile
                            System.IO.File.Create(Environment.CurrentDirectory & "\" & "Password.txt").Dispose()
                            Dim byt As Byte() = System.Text.Encoding.UTF8.GetBytes(txtPassConfirm.Text)
                            passEnkrip = Convert.ToBase64String(byt)
                            My.Computer.FileSystem.WriteAllText(PFile, passEnkrip, True)
                        End If
                    Else
                        System.IO.File.Create(Environment.CurrentDirectory & "\" & "Password.txt").Dispose()
                        Dim byt As Byte() = System.Text.Encoding.UTF8.GetBytes(txtPassConfirm.Text)
                        passEnkrip = Convert.ToBase64String(byt)
                        My.Computer.FileSystem.WriteAllText(PFile, passEnkrip, True)
                    End If

                Catch ex As Exception
                    MsgBox("Terjadi kesalahan : " & ex.Message, vbCritical, "Guzko Tutorial")
                End Try
                Me.Close()
            End If
        End If

oke selesai sudah kita melakukan peng-codingan dari semua form. Sekarang waktunya kita testing. Silahkan sahabat testing dan jika diikuti dengan benar maka dipastikan aplikasi yang sahabat blogger buat ini dijamin berhasil. Ataupun jika seandainya tidak berhasil atau ada yang ingin sahabat blogger tanyakan, bisa langsung tinggalkan jejak pada kolom komentar dibawah.

Demikian tutorial saya ini tentang Membuat Hide dan Un-hide Folder dengan Password di VB.NET, semoga ada manfaatnya bagi sahabat blogger semuanya. Jika ada yang ingin mendownload source code lengkapnya bisa melalui link dibawah.

Sekian dulu dari saya, kita berjumpa lagi dilain waktu dengan tutorial yang berbeda....seee...uuuuu


Click to comment