سورس کد برنامه قفل و مخفی کننده پوشه‌ها با ویژوال بیسیک دات نت (App Folder Lock vb.net)


در دنیای امروز، امنیت اطلاعات و حفاظت از داده‌ها اهمیت بسیار زیادی پیدا کرده است. یکی از روش‌های رایج برای جلوگیری از دسترسی غیرمجاز به پوشه‌ها، قفل کردن و مخفی کردن آنها است. برنامه‌های متعددی وجود دارند که این وظیفه را انجام می‌دهند، و یکی از روش‌های توسعه این برنامه‌ها، استفاده از زبان برنامه‌نویسی ویژوال بیسیک دات نت (VB.NET) است. در این مقاله، قصد داریم به طور کامل و جامع در مورد سورس کد برنامه‌ای صحبت کنیم که قادر است با ویژوال بیسیک دات نت، پوشه‌ها را قفل و مخفی کند.
اهمیت امنیت در برنامه‌های ویندوز، مخصوصا در زمینه حفاظت از فایل‌ها و پوشه‌ها، بر هیچ کسی پوشیده نیست. بسیاری از کاربران نیاز دارند تا پوشه‌های شخصی یا حساس خود را مخفی نگه دارند و در صورت لزوم، فقط با وارد کردن رمز عبور، آنها را باز کنند. برای این منظور، برنامه‌های قفل و مخفی‌کننده پوشه‌ها طراحی شده‌اند. این برنامه‌ها عموماً باید قابلیت‌های زیر را داشته باشند:
1. مخفی کردن پوشه‌های خاص
2. قفل کردن پوشه‌ها با رمز عبور
3. باز کردن قفل پوشه‌ها با وارد کردن رمز صحیح
4. مخفی کردن یا نمایش مجدد پوشه‌ها به دلخواه کاربر
5. حفظ امنیت و جلوگیری از دسترسی غیرمجاز
در ادامه، به شرح کامل این قابلیت‌ها، نحوه پیاده‌سازی آنها و نمونه سورس کدی که این ویژگی‌ها را پیاده‌سازی می‌کند، می‌پردازیم.

طراحی اولیه برنامه


در ابتدا، باید یک فرم ساده در ویژوال بیسیک دات نت طراحی کنیم. این فرم شامل چند کنترل است:
- TextBox برای وارد کردن مسیر پوشه مورد نظر
- TextBox برای وارد کردن رمز عبور
- دکمه‌هایی برای مخفی کردن، نشان دادن، قفل کردن و باز کردن پوشه‌ها
- لیست‌باکس یا لیست ویو برای نمایش پوشه‌های مخفی شده یا قفل شده
در این برنامه، از کلاس‌های موجود در VB.NET و توابع سیستم‌عامل ویندوز بهره می‌گیریم تا عملیات مربوط به مخفی‌سازی و قفل کردن پوشه‌ها را انجام دهیم.

مخفی کردن پوشه‌ها


یکی از روش‌های محبوب برای مخفی کردن پوشه‌ها، تغییر ویژگی‌های فایل و پوشه در ویندوز است. برای این کار، از کلاس `FileAttributes` در VB.NET استفاده می‌کنیم. به طور خاص، ویژگی `Hidden` به فایل یا پوشه اضافه می‌شود تا در File Explorer مخفی شود.
کد نمونه برای مخفی کردن پوشه:
vb.net  
Dim folderPath As String = "C:\Users\YourName\Documents\SecretFolder"
Dim folderInfo As New DirectoryInfo(folderPath)
folderInfo.Attributes = folderInfo.Attributes Or FileAttributes.Hidden

در این قطعه کد، ابتدا مسیر پوشه مورد نظر تعیین می‌شود، سپس با استفاده از کلاس `DirectoryInfo`، ویژگی `Hidden` به صورت افزایشی به ویژگی‌های قبلی افزوده می‌شود.

مخفی کردن پوشه‌ها به صورت امن‌تر


برای افزایش امنیت، می‌توانیم پس از مخفی کردن پوشه، آن را از دید کاربران مخفی نگه داریم، یعنی علاوه بر ویژگی `Hidden`، از ویژگی `System` نیز بهره ببریم:
vb.net  
folderInfo.Attributes = folderInfo.Attributes Or FileAttributes.Hidden Or FileAttributes.System

این کار باعث می‌شود، پوشه در محیط‌های عادی ویندوز مخفی بماند و از دید کاربرانی که به دنبال پوشه‌های مخفی هستند، پنهان بماند.

بازگرداندن وضعیت پوشه


برای اینکه پوشه مخفی شده را دوباره نمایش دهیم، کافی است ویژگی‌های `Hidden` و `System` را حذف کنیم:
vb.net  
folderInfo.Attributes = folderInfo.Attributes And Not (FileAttributes.Hidden Or FileAttributes.System)

این عملیات به صورت معکوس، ویژگی‌های مخفی بودن را حذف می‌کند و پوشه مجدداً در ویندوز نمایش داده می‌شود.

قفل کردن پوشه‌ها با رمز عبور


در کنار مخفی کردن، قفل کردن پوشه با رمز عبور یکی از مهم‌ترین ویژگی‌ها است. برای این کار، چند روش وجود دارد:
- استفاده از رمزگذاری بر روی فایل‌ها و پوشه‌ها
- استفاده از فایل‌های مخفی که نیازمند رمز عبور هستند برای دسترسی
- تغییر مجوزهای دسترسی در ویندوز (ACL) برای محدود کردن دسترسی
در پروژه‌های VB.NET، معمول‌ترین روش، استفاده از رمز عبور و کنترل دسترسی است. به این صورت که، هنگام قفل کردن، اطلاعات مربوط به رمز عبور در فایل‌های تنظیمات برنامه ذخیره می‌شود، و در هنگام باز کردن، کاربر باید رمز را وارد کند.

پیاده‌سازی سیستم رمز عبور در برنامه


برای مثال، می‌توانیم یک متغیر سراسری برای نگهداری رمز عبور تعریف کنیم، و هنگام قفل کردن، آن را مقایسه کنیم:
vb.net  
Dim password As String = "mypassword"

سپس، هنگام تلاش برای باز کردن پوشه، کاربر باید رمز را وارد کند:
vb.net  
If TextBoxPassword.Text = password Then
' عملیات باز کردن پوشه
Else
MessageBox.Show("رمز عبور اشتباه است.")
End If

امنیت بیشتر با رمزنگاری


برای جلوگیری از لو رفتن رمز عبور، می‌توانیم رمز عبور را رمزنگاری کنیم، مثلا با الگوریتم‌های ساده مانند AES یا MD5، و در فایل‌های تنظیمات، مقادیر رمزنگاری شده را ذخیره کنیم. این کار، امنیت برنامه را به شدت افزایش می‌دهد.

مخفی کردن و نمایش پوشه‌ها به کمک API ویندوز


در برخی موارد، برای مخفی کردن کامل، نیاز است از APIهای ویندوز بهره برد. به عنوان نمونه، تابع `SHFileOperation` و `SetFileAttributes` در ویندوز، برای عملیات‌های پیشرفته‌تر مورد استفاده قرار می‌گیرند.
همچنین، می‌توان با استفاده از توابع API مانند `FindFirstFile`, `FindNextFile` و `SetFileAttributes`، عملیات مخفی‌سازی و بازگشایی پوشه‌ها را کنترل کرد.

پیاده‌سازی قفل و مخفی کردن پوشه‌ها با کد کامل


در ادامه، نمونه سورس کد کامل برنامه را مشاهده می‌کنید که قابلیت‌های ذکر شده را به صورت عملی پیاده‌سازی می‌کند:
vb.net  
Imports System.IO
Imports System.Security.Cryptography
Imports System.Text
Public Class Form1
Private secretPassword As String = "Secure123"
Private Sub btnHideFolder_Click(sender As Object, e As EventArgs) Handles btnHideFolder.Click
Dim folderPath As String = txtFolderPath.Text
If Directory.Exists(folderPath) Then
Dim dirInfo As New DirectoryInfo(folderPath)
dirInfo.Attributes = dirInfo.Attributes Or FileAttributes.Hidden Or FileAttributes.System
MessageBox.Show("پوشه مخفی شد.")
Else
MessageBox.Show("مسیر پوشه معتبر نیست.")
End If
End Sub
Private Sub btnShowFolder_Click(sender As Object, e As EventArgs) Handles btnShowFolder.Click
Dim folderPath As String = txtFolderPath.Text
If Directory.Exists(folderPath) Then
Dim dirInfo As New DirectoryInfo(folderPath)
dirInfo.Attributes = dirInfo.Attributes And Not (FileAttributes.Hidden Or FileAttributes.System)
MessageBox.Show("پوشه ظاهر شد.")
Else
MessageBox.Show("مسیر پوشه معتبر نیست.")
End If
End Sub
Private Sub btnLockFolder_Click(sender As Object, e As EventArgs) Handles btnLockFolder.Click
Dim passwordInput As String = txtPassword.Text
Dim folderPath As String = txtFolderPath.Text
If passwordInput = secretPassword Then
' عملیات رمزگذاری یا محدود کردن دسترسی انجام شود
' در اینجا، تنها مخفی کردن پوشه به عنوان مثال
If Directory.Exists(folderPath) Then
Dim dirInfo As New DirectoryInfo(folderPath)
dirInfo.Attributes = dirInfo.Attributes Or FileAttributes.Hidden Or FileAttributes.System
MessageBox.Show("پوشه قفل شد.")
Else
MessageBox.Show("مسیر پوشه معتبر نیست.")
End If
Else
MessageBox.Show("رمز عبور اشتباه است.")
End If
End Sub
Private Sub btnUnlockFolder_Click(sender As Object, e As EventArgs) Handles btnUnlockFolder.Click
Dim passwordInput As String = txtPassword.Text
Dim folderPath As String = txtFolderPath.Text
If passwordInput = secretPassword Then
If Directory.Exists(folderPath) Then
Dim dirInfo As New DirectoryInfo(folderPath)
dirInfo.Attributes = dirInfo.Attributes And Not (FileAttributes.Hidden Or FileAttributes.System)
MessageBox.Show("پوشه آنلاک شد.")
Else
MessageBox.Show("مسیر پوشه معتبر نیست.")
End If
Else
MessageBox.Show("رمز عبور اشتباه است.")
End If
End Sub
End Class

در این نمونه، برنامه قابلیت مخفی کردن، نمایش، قفل و آنلاک کردن پوشه‌ها را دارد. البته، برای امنیت بیشتر، باید رمز عبور را رمزنگاری کرد و عملیات‌های دیگر مانند محدود کردن دسترسی‌های فایل، باید در نظر گرفته شود.

نتیجه‌گیری


در نهایت، برنامه‌های قفل و مخفی‌کننده پوشه‌ها باید قابلیت‌های متعددی داشته باشند تا بتوانند نیازهای کاربران را برآورده سازند. استفاده از زبان VB.NET، بهره‌گیری از امکانات سیستم‌عامل ویندوز و APIهای آن، و همچنین رعایت نکات امنیتی، از موارد ضروری در توسعه چنین برنامه‌هایی هستند. با طراحی هوشمندانه و پیاده‌سازی درست، می‌توان برنامه‌ای قدرتمند ساخت که علاوه بر حفاظت از فایل‌ها، کاربر پسند و قابل اعتماد باشد. این نوع برنامه‌ها، در حفاظت از اطلاعات حساس، حفظ حریم خصوصی و جلوگیری از دسترسی‌های ناخواسته، نقش حیاتی دارند و اهمیت آنها در دنیای دیجیتال امروز هر روز بیشتر می‌شود.