السلام عليكم ورحمة الله وبركاته
إخواني صادفتني مشكلة غريبة نوعا ما
وأتوقع المشكلة في الصلاحيات
أحاول الوصول إلى قيمة ( رقم إصدار الفايرفوكس ) ولله الحمد بعد البحث أستطعت الوصول إليها
بالأمس الكود يعمل وتظهر بيانات القيمة واليوم للأسف لا تظهر وجميع القيم في مجلد 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 بت ؟
هلا وغلا أبو نوره مثال جداً جمممميل وأستفدت منه أشياء كثير , أشكرك جداً
وأول مره أعرف اداة FlowLayoutPanel وطريقة إستخدامها
--------------------------------------------------------------
حملت المثال
b = جميع المتصفحات
كود :
For Each b As Browser In Browsers.GetBrowsers
هل أستطيع جعل b = متصفح الفايرفوكس فقط ؟
لأن بستخدم if الشرطيه , إذا كان رقم الإصدار كذا إعمل كذا
ألف شكر يا باش مهندس
سؤال أخير من أين تتم قراءة القيمة ؟ وهل سيعمل مع جميع انظمة الويندوز بالنواتين 32بت و 64 بت ؟
مرحبا اخى
لم افهم اي قيمه تقصد! قد تقصد firefox.Version وهناك قيم اخرى ستظهر لك عندما تضع نقطه بعد firefox اثناء كتابه الكود
ان شاء الله يعمل في جميع الانظمه