منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب
الحصول علي جميع البرامج التي تم تنصيبها علي جهاز الكمبيوتر - نسخة قابلة للطباعة

+- منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب (http://vb4arb.com/vb)
+-- قسم : قسم لغة الفيجوال بيسك VB.NET (http://vb4arb.com/vb/forumdisplay.php?fid=182)
+--- قسم : قسم مكتبة اكواد VB.NET (http://vb4arb.com/vb/forumdisplay.php?fid=185)
+--- الموضوع : الحصول علي جميع البرامج التي تم تنصيبها علي جهاز الكمبيوتر (/showthread.php?tid=21749)



الحصول علي جميع البرامج التي تم تنصيبها علي جهاز الكمبيوتر - silverlight - 18-09-17

الفكرة تنحصر في قراءة الريجستري و استرجاع البيانات منه علي هيئة مصفوفة للكلاس التالي


PHP كود :
Public Class InstalledAssembly
    Public Property Name
() As String
    Public Property Location
() As String
    Public Property Icon
() As String
End 
Class 

الدالة التالية تقرأ الريجستري ومنها نحصل علي جميع البرامج التي تم تنصيبها علي جهاز الكمبيوتر
PHP كود :
   Private Function GetAllInstallAssemblies() As List(Of InstalledAssembly)
 
       Dim result As List(Of InstalledAssembly) = New List(Of InstalledAssembly)()
 
       Dim regKeyString As String "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall"
 
       Using key As Microsoft.Win32.RegistryKey Microsoft.Win32.Registry.LocalMachine.OpenSubKey(regKeyString)
 
           If key IsNot Nothing Then
                Dim names 
As String() = key.GetSubKeyNames()
 
               Dim i As Integer 0
                While i 
names.Length
                    Dim currentName 
As String names(i)
 
                   Using subKey As Microsoft.Win32.RegistryKey key.OpenSubKey(currentName)
 
                       Try
                            Dim currentInstalledAssembly 
As InstalledAssembly = New InstalledAssembly
                            If subKey IsNot Nothing AndAlso subKey
.GetValue("DisplayName"IsNot Nothing Then
                                currentInstalledAssembly
.Name subKey.GetValue("DisplayName").ToString()

 
                               If subKey.GetValue("DisplayIcon"IsNot Nothing Then
                                    currentInstalledAssembly
.Icon subKey.GetValue("DisplayIcon").ToString()
 
                               Else
                                    currentInstalledAssembly
.Icon ""
 
                               End If
 
                               If subKey.GetValue("InstallLocation"IsNot Nothing Then
                                    currentInstalledAssembly
.Location subKey.GetValue("InstallLocation").ToString()
 
                               Else
                                    currentInstalledAssembly
.Location ""
 
                               End If
 
                               If Not result.Contains(currentInstalledAssemblyThen
                                    result
.Add(currentInstalledAssembly)
 
                               End If

 
                           End If

 
                       Catch ex As Exception
                        End 
Try
 
                   End Using
                    i 
+= 1
                End 
While
 
           End If
 
       End Using
        Return result
    End 
Function 



طريقة استخدام الكود


PHP كود :
       For Each ia As InstalledAssembly In GetAllInstallAssemblies()
 
           ListBox1.Items.Add(ia.Name)
 
       Next 

طريقة أخري
 
لكي تحصل علي أسماء البرامج فقط دون الحاجة للكلاس
يمكنكم استخدام الدالة التالية فقط


PHP كود :
   Private Function GetInstalledApplicationNames() As List(Of String)
 
       Dim result As List(Of String) = New List(Of String)()
 
       Dim regKeyString As String "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall"

 
       Using key As Microsoft.Win32.RegistryKey Microsoft.Win32.Registry.LocalMachine.OpenSubKey(regKeyString)
 
           If key IsNot Nothing Then
                Dim names 
As String() = key.GetSubKeyNames()
 
               Dim i As Integer 0
                While i 
names.Length
                    Dim currentName 
As String names(i)
 
                   Using subKey As Microsoft.Win32.RegistryKey key.OpenSubKey(currentName)
 
                       Try
                            If subKey IsNot Nothing AndAlso subKey
.GetValue("DisplayName"IsNot Nothing Then
                                Dim installedapplication 
As String subKey.GetValue("DisplayName").ToString()
 
                               If Not result.Contains(installedapplicationThen
                                    result
.Add(installedapplication)
 
                               End If
 
                           End If
 
                       Catch ex As Exception
                        End 
Try
 
                   End Using
                    i 
+= 1
                End 
While
 
           End If

 
       End Using

        Return result
    End 
Function 

الأكواد أعلاه هي إجابة للسؤال الموجود في اللينك التالي
التحقق من تنصيب برامج معينة علي جهاز الكمبيوتر


RE: الحصول علي جميع البرامج التي تم تنصيبها علي جهاز الكمبيوتر - سعود الشامان - 18-09-17

ألف شكر لك أستاذ silverlight 

تم تطبيق الطريقة الأولى

المثال في المرفقات



RE: الحصول علي جميع البرامج التي تم تنصيبها علي جهاز الكمبيوتر - عبدالرحمن المكاوي - 18-09-17

(18-09-17, 12:26 PM)silverlight كتب : الفكرة تنحصر في قراءة الريجستري و استرجاع البيانات منه علي هيئة مصفوفة للكلاس التالي


PHP كود :
Public Class InstalledAssembly
    Public Property Name
() As String
    Public Property Location
() As String
    Public Property Icon
() As String
End 
Class 

الدالة التالية تقرأ الريجستري ومنها نحصل علي جميع البرامج التي تم تنصيبها علي جهاز الكمبيوتر
PHP كود :
   Private Function GetAllInstallAssemblies() As List(Of InstalledAssembly)
 
       Dim result As List(Of InstalledAssembly) = New List(Of InstalledAssembly)()
 
       Dim regKeyString As String "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall"
 
       Using key As Microsoft.Win32.RegistryKey Microsoft.Win32.Registry.LocalMachine.OpenSubKey(regKeyString)
 
           If key IsNot Nothing Then
                Dim names 
As String() = key.GetSubKeyNames()
 
               Dim i As Integer 0
                While i 
names.Length
                    Dim currentName 
As String names(i)
 
                   Using subKey As Microsoft.Win32.RegistryKey key.OpenSubKey(currentName)
 
                       Try
                            Dim currentInstalledAssembly 
As InstalledAssembly = New InstalledAssembly
                            If subKey IsNot Nothing AndAlso subKey
.GetValue("DisplayName"IsNot Nothing Then
                                currentInstalledAssembly
.Name subKey.GetValue("DisplayName").ToString()

 
                               If subKey.GetValue("DisplayIcon"IsNot Nothing Then
                                    currentInstalledAssembly
.Icon subKey.GetValue("DisplayIcon").ToString()
 
                               Else
                                    currentInstalledAssembly
.Icon ""
 
                               End If
 
                               If subKey.GetValue("InstallLocation"IsNot Nothing Then
                                    currentInstalledAssembly
.Location subKey.GetValue("InstallLocation").ToString()
 
                               Else
                                    currentInstalledAssembly
.Location ""
 
                               End If
 
                               If Not result.Contains(currentInstalledAssemblyThen
                                    result
.Add(currentInstalledAssembly)
 
                               End If

 
                           End If

 
                       Catch ex As Exception
                        End 
Try
 
                   End Using
                    i 
+= 1
                End 
While
 
           End If
 
       End Using
        Return result
    End 
Function 



طريقة استخدام الكود


PHP كود :
       For Each ia As InstalledAssembly In GetAllInstallAssemblies()
 
           ListBox1.Items.Add(ia.Name)
 
       Next 

طريقة أخري
 
لكي تحصل علي أسماء البرامج فقط دون الحاجة للكلاس
يمكنكم استخدام الدالة التالية فقط


PHP كود :
   Private Function GetInstalledApplicationNames() As List(Of String)
 
       Dim result As List(Of String) = New List(Of String)()
 
       Dim regKeyString As String "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall"

 
       Using key As Microsoft.Win32.RegistryKey Microsoft.Win32.Registry.LocalMachine.OpenSubKey(regKeyString)
 
           If key IsNot Nothing Then
                Dim names 
As String() = key.GetSubKeyNames()
 
               Dim i As Integer 0
                While i 
names.Length
                    Dim currentName 
As String names(i)
 
                   Using subKey As Microsoft.Win32.RegistryKey key.OpenSubKey(currentName)
 
                       Try
                            If subKey IsNot Nothing AndAlso subKey
.GetValue("DisplayName"IsNot Nothing Then
                                Dim installedapplication 
As String subKey.GetValue("DisplayName").ToString()
 
                               If Not result.Contains(installedapplicationThen
                                    result
.Add(installedapplication)
 
                               End If
 
                           End If
 
                       Catch ex As Exception
                        End 
Try
 
                   End Using
                    i 
+= 1
                End 
While
 
           End If

 
       End Using

        Return result
    End 
Function 

الأكواد أعلاه هي إجابة للسؤال الموجود في اللينك التالي
التحقق من تنصيب برامج معينة علي جهاز الكمبيوتر

اوك اخي جلب الكود جلب ليه كل البرامج اريد التحقق من وجود برنامج معين ااين اكتب اسمه


RE: الحصول علي جميع البرامج التي تم تنصيبها علي جهاز الكمبيوتر - عبدالرحمن المكاوي - 18-09-17

اين انت اخي......................


RE: الحصول علي جميع البرامج التي تم تنصيبها علي جهاز الكمبيوتر - silverlight - 19-09-17

عليك ان تبحث في المصفوفة عن اسم البرنامج المراد التحقق من وجوده
إن لم يكن اسم البرنامج موجود داخل المصفوفة تقوم بإنزاله و تركيبه