منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب

نسخة كاملة : مشكلة في قراءة قيمة من الريجستري
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
الصفحات : 1 2
السلام عليكم ورحمة الله وبركاته

إخواني صادفتني مشكلة غريبة نوعا ما
وأتوقع المشكلة في الصلاحيات

أحاول الوصول إلى قيمة ( رقم إصدار الفايرفوكس ) ولله الحمد بعد البحث أستطعت الوصول إليها

بالأمس الكود يعمل وتظهر بيانات القيمة واليوم للأسف لا تظهر وجميع القيم في مجلد SOFTWARE ومجلداته الفرعية لا تظهر بياناتها
مع العلم بأنه تظهر بيانات القيم الموجودة في مسارات أخرى مثل :

كود :
readValue = My.Computer.Registry.GetValue("HKEY_LOCAL_MACHINE\HARDWARE\DESCRIPTION\System\BIOS", "SystemProductName", Nothing)

كود المشروع

كود :
Public Class Form1
   Dim readValue As String
   Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
       readValue = My.Computer.Registry.GetValue("HKEY_LOCAL_MACHINE\SOFTWARE\Mozilla\Mozilla Firefox", "", Nothing)
       Label1.Text = readValue
   End Sub
مشكلة البيانات التي يتم تخزينها في الريجستري و الخاصة بالبرامج انه قد يتم تغييرها في اي وقت بواسطة البرنامج
وبالتالي فهي غير مضمونة تماما
ربما الريجستري الوحيد المضمون قراءته هو Uninstall الخاص بالويندوز
الحقيقة انا لست متذكر اسم هذا الريجستري تماما
يسعد صبآحك أخوي silverlight

إقتباس :مشكلة البيانات التي يتم تخزينها في الريجستري و الخاصة بالبرامج انه قد يتم تغييرها في اي وقت بواسطة البرنامج

وبالتالي فهي غير مضمونة تماما

كلامك سليم لكني اريدها في شغلة معينة

أنا أريدها أن تتغير اذا ثبت نسخه احدث يتم وضع النسخه الحديثه والعكس
لي يومين متابع فيها احذف البرنامج واثبت نسخة اقدم أحصله وضع رقم النسخه الأقدم في الريجستري


ولتوضيح الفكرة بشكل أكبر



أختصرت هذه المقالة بضغطة زر

https://www.internetdownloadmanager.com/...ation.html

يتم قراءة رقم إصدار الفايرفوكس وبناء عليه يتم إستخراج إضافة IDM المتوافقة مع رقم الإصدار في القرص C والامر التالي فتح الإضافة بواسطة الفايرفوكس


كود المشروع بشكل كامل

كود :
Public Class Form1
   Dim readValue As String
   Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
       readValue = My.Computer.Registry.GetValue("HKEY_LOCAL_MACHINE\SOFTWARE\Mozilla\Mozilla Firefox", "", Nothing)
       Label1.Text = readValue
   End Sub

   Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
       Try

           readValue = My.Computer.Registry.GetValue _
("HKEY_LOCAL_MACHINE\SOFTWARE\Mozilla\Mozilla Firefox", "", Nothing)
           If readValue >= "53.0.0" Then
               IO.File.WriteAllBytes("C:\idmmzcc3.xpi", My.Resources.idmmzcc3)
               Process.Start("firefox.exe", "C:\idmmzcc3.xpi")
               Return
           End If

           If readValue >= "27.0.0" Then
               IO.File.WriteAllBytes("C:\idmmzcc2.xpi", My.Resources.idmmzcc2)
               Process.Start("firefox.exe", "C:\idmmzcc2.xpi")
               Return
           End If


           If readValue >= "1.5" Then
               IO.File.WriteAllBytes("C:\idmmzcc.xpi", My.Resources.idmmzcc)
               Process.Start("firefox.exe", "C:\idmmzcc.xpi")
               Return
           End If

       Catch ex As Exception
           MsgBox("حدث خطأ ما , إذا كان فايرفوكس يعمل قم بإغلاقه وإعادة االمحاولة", MsgBoxStyle.Critical, Me.Text)
       End Try

   End Sub


End Class
ما قصرت يالغالي , واستفدت من الموضوع كثير ( عمل تقرير للبرامج المثبته )



لكن المشكلة يصعب جلب بيانات القيمة من هذا المسار

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Mozilla Firefox 51.0.1 (x64 ar)

أما هذا المسار ثابت

HKEY_LOCAL_MACHINE\SOFTWARE\Mozilla\Mozilla Firefox

لكن الإشكالية أن بيانات القيمة لا تظهر مع العلم سابقا انها تظهر ولو جربت ستظهر لديك

وجدت القيمة في مسار آخر


كود :
My.Computer.Registry.GetValue("HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\mozilla.org\Mozilla", "CurrentVersion", Nothing)


السؤوال هل هذا المسار موجود في جميع أنظمة الويندوز بالنواتين 32 بت و 64 بت ؟
مرحبا اخى سعود

يمكن في هذا المثال تجد فيه ما تبحث عنه

[attachment=15477]

[attachment=15478]
هلا وغلا أبو نوره مثال جداً جمممميل وأستفدت منه أشياء كثير , أشكرك جداً

وأول مره أعرف اداة FlowLayoutPanel وطريقة إستخدامها

--------------------------------------------------------------

حملت المثال 





b = جميع المتصفحات

كود :
For Each b As Browser In Browsers.GetBrowsers

هل أستطيع جعل b = متصفح الفايرفوكس فقط ؟

لأن بستخدم if الشرطيه , إذا كان رقم الإصدار كذا إعمل كذا
مرحبا اخى

PHP كود :
Dim b As List(Of Browser) = Browsers.GetBrowsers
Dim firefox 
As Browser = (From x As Browser In b Where x.Name.Equals("Mozilla Firefox")).FirstOrDefault

If Not IsNothing(firefoxThen
    Select 
Case firefox.Version
        Case 
"55.0.3"
 
           MsgBox("إعمل كذا")

 
       Case "66.55.77"
 
           MsgBox("متعملش كذا")

 
   End Select
End 
If 
ألف شكر يا باش مهندس


سؤال أخير من أين تتم قراءة القيمة ؟ وهل سيعمل مع جميع انظمة الويندوز بالنواتين 32بت و 64 بت ؟
مرحبا اخى

لم افهم اي قيمه تقصد! قد تقصد firefox.Version وهناك قيم اخرى ستظهر لك عندما تضع نقطه بعد firefox اثناء كتابه الكود

ان شاء الله يعمل في جميع الانظمه
الصفحات : 1 2