سورس کد نرم‌افزار حذف برنامه‌ها در ویندوز با VB.NET


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

سورس کد نرم‌افزار حذف برنامه‌ها در ویندوز با VB.NET

می‌پردازیم. ابتدا، مفاهیم پایه‌ای و ساختارهای مورد نیاز را بررسی می‌کنیم، سپس، نحوه پیاده‌سازی و توسعه آن را شرح می‌دهیم، در ادامه، نکات مهم و چالش‌های احتمالی را مورد بحث قرار می‌دهیم و در نهایت، چند نمونه کد و ساختارهای کاربردی ارائه می‌دهیم.
مفاهیم پایه‌ای و ساختارهای مورد نیاز
در ابتدا، باید بدانیم که برنامه‌های نصب شده در ویندوز در کجا ذخیره می‌شوند و چگونه می‌توان آنها را شناسایی کرد. معمولا، اطلاعات مربوط به برنامه‌های نصب شده در رجیستری ویندوز قرار دارد، به طور خاص، در شاخه‌های زیر:
- `HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall`

- `HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Uninstall`
این شاخه‌ها حاوی کلیدهای متعددی هستند که هر کدام، اطلاعات مربوط به یک برنامه نصب شده را شامل می‌شوند. این اطلاعات شامل نام برنامه، نسخه، مسیر نصب، شناسه‌های برنامه و دیگر جزئیات است.
در VB.NET، برای خواندن این اطلاعات، می‌توان از namespace `Microsoft.Win32` بهره برد. این namespace، کلاس‌هایی مانند `Registry` و `RegistryKey` را فراهم می‌کند که به راحتی می‌توان با آنها وارد رجیستری شد و اطلاعات مورد نیاز را استخراج کرد.
از طرف دیگر، برای حذف برنامه، معمولا، باید فرآیندهای مربوط به حذف نصب، شامل اجرای فایل‌های uninstaller موجود در مسیر نصب برنامه است. در بسیاری موارد، برنامه‌های نصب شده، فایل uninstaller را در مسیر مشخصی قرار می‌دهند، که با استفاده از اطلاعات رجیستری قابل دسترسی است.
نحوه پیاده‌سازی و توسعه نرم‌افزار
برای شروع، باید یک پروژه ویندوز فرم در VB.NET ایجاد کنیم. در این پروژه، یک لیست‌ویو قرار می‌دهیم تا برنامه‌های نصب شده را نمایش دهد. همچنین، یک دکمه برای حذف برنامه انتخاب شده در نظر می‌گیریم.
مرحله بعد، با کدهای زیر، اطلاعات برنامه‌ها را از رجیستری می‌خوانیم و در لیست‌ویو نمایش می‌دهیم:
vb.net  

Imports Microsoft.Win32
Public Class MainForm

Private Sub LoadInstalledApps()

Dim uninstallKey As String = "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall"

Using regKey As RegistryKey = Registry.LocalMachine.OpenSubKey(uninstallKey)

For Each subKeyName As String In regKey.GetSubKeyNames()

Using subKey As RegistryKey = regKey.OpenSubKey(subKeyName)

Dim appName As String = CStr(subKey.GetValue("DisplayName"))

Dim installPath As String = CStr(subKey.GetValue("InstallLocation"))

Dim uninstallString As String = CStr(subKey.GetValue("UninstallString"))

If Not String.IsNullOrEmpty(appName) Then

ListViewApps.Items.Add(New ListViewItem(New String() {appName, installPath, uninstallString}))

End If

End Using

Next

End Using

End Sub
Private Sub MainForm_Load(sender As Object, e As EventArgs) Handles MyBase.Load

LoadInstalledApps()

End Sub

End Class


در این کد، با باز کردن شاخه `Uninstall` در رجیستری، تمامی برنامه‌های نصب شده خوانده می‌شوند و در لیست‌ویو قرار می‌گیرند. هر آیتم شامل نام برنامه، مسیر نصب و مسیر فایل uninstaller است.
برای حذف برنامه، کاربر باید برنامه مورد نظر را انتخاب کند و بر روی دکمه حذف کلیک کند. سپس، کد زیر، فایل uninstaller را اجرا می‌کند:
vb.net  

Private Sub btnUninstall_Click(sender As Object, e As EventArgs) Handles btnUninstall.Click

If ListViewApps.SelectedItems.Count > 0 Then

Dim uninstallStr As String = ListViewApps.SelectedItems(0).SubItems(2).Text

If Not String.IsNullOrEmpty(uninstallStr) Then

Try

Process.Start(uninstallStr)

Catch ex As Exception

MessageBox.Show("خطا در اجرای فایل حذف نصب: " & ex.Message)

End Try

Else

MessageBox.Show("فایل حذف نصب یافت نشد.")

End If

Else

MessageBox.Show("لطفاً برنامه‌ای را انتخاب کنید.")

End If

End Sub


در این بخش، با کلیک بر روی دکمه، فایل uninstaller اجرا می‌شود. البته، باید توجه داشت که ممکن است مسیرهای مختلف، ساختارهای متفاوتی داشته باشند... ← ادامه مطلب در magicfile.ir