تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
إدخال بيانات ملف رجستري (reg.) في سجل النظام (بدون ظهور أي رسالة للمستخدم) تثبيت صامت
#1
كاتب الموضوع : عبدالله الدوسري



السلام عليكم ورحمة الله وبركاتة ..


الهدف : إدخال بيانات ملف رجستري (reg.) في سجل النظام (بدون ظهور أي رسالة للمستخدم) تثبيت صامت أو بما يسمى الدمج الصامت.
مستوى المقالة: مبتدأ - عادي



هذا الكود يقوم بدمج ملف رجستري (reg.) في سجل النظام (أي أن المفاتيح الفرعية و المفاتيح الموجودة في الملف (reg.) سيتم إضافتها إلى سجل النظام) ( وإذا كانت موجودة مسبقاً سيتم تحديثها )
بدون أن يقوم بإظهار رسالة تأكيد على دمج الملف في الرجستري ورسالة نجاج عملية الدمج



قمت بعمل هذ الكود لتسهيل التجربة ( الكود الذي يعمل بصمت في الأسفل - بعد هذا الكود مباشرتاً )
فعند الضغط على الزر يقوم بفتح نافذة تحدد فيها ملف الرجستري المطلوب دمجة
هذة النافذة يمكنك الإستغناء عنها ووضع مسار الملف مباشرتاً من خلال الكود
بعد عملية الدمج تظهر رسالة بنجاح الدمج
أيضاً هذة الرسالة يمكنك إزالتها

هذا الكود للتجربة مع ظهور نوافذ

كود :
[color=blue]Private Sub[/color] Button1_Click([color=blue]ByVal [/color]sender [color=blue]As [/color]System.Object, [color=blue]ByVal [/color]e [color=blue]As [/color]System.EventArgs) [color=blue]Handles [/color]Button1.Click

[color=blue]Dim [/color]OFD [color=blue]As New[/color] OpenFileDialog
OFD.RestoreDirectory = [color=blue]True[/color]
OFD.Filter = [color=darkred]"Registry File (*.reg) |*.reg|(*.*) |*.*"[/color]
[color=blue]If [/color]OFD.ShowDialog = Windows.Forms.DialogResult.OK [color=blue]Then[/color]
[color=blue]Dim [/color]RegFileName [color=blue]As String[/color] = [color=blue]My[/color].Computer.FileSystem.GetFileInfo(OFD.FileName).Name
[color=blue]Dim [/color]RegFileDirPath [color=blue]As String[/color] = [color=blue]My[/color].Computer.FileSystem.GetFileInfo(OFD.FileName).DirectoryName
[color=blue]Dim [/color]RegProcess [color=blue]As New [/color]Process()
[color=blue]Try[/color]
RegProcess.StartInfo.WindowStyle = ProcessWindowStyle.Hidden
RegProcess.StartInfo.CreateNoWindow = [color=blue]True[/color]
RegProcess.StartInfo.FileName = [color=darkred]"cmd.exe"[/color]
RegProcess.StartInfo.Arguments = [color=darkred]"/C cd "[/color] & RegFileDirPath & [color=darkred]" && regedit.exe /s "[/color] & RegFileName
RegProcess.Start()
RegProcess.WaitForExit(6000)
[color=blue]If Not[/color] RegProcess.HasExited [color=blue]Then[/color]
RegProcess.Kill()
[color=blue]End If[/color]
RegProcess.Close()

MsgBox([color=darkred]"تم إضافة الملف بنجاح" [/color]& vbNewLine & [color=darkred]"هذة الرسالة فقط للتوضيح يمكنك إزالتها من الكود"[/color])

[color=blue]Catch [/color]ex [color=blue]As [/color]Exception
MessageBox.Show([color=darkred]"Unable to update the registry :"[/color] & vbNewLine & ex.Message, [color=darkred]"Registry Update Error"[/color], MessageBoxButtons.OK, MessageBoxIcon.Error)
[COLOR=blue]End Try
End If

End Sub[/COLOR]

'DOS هو برنامج يتعامل بموجة الأوامر cmd.exeبرنامج الـ


'





هذا الكود عند تنفيذة سيعمل بدون ظهور أي نافذة
إلا إذا حدث خطاء في عملية الدمج تظهر لك رسالة الخطاء (يمكنك أيظاً إزالة هذة الرسالة)

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

كود :
[color=seagreen] 'هنا يتم وضع اسم ملف الرجستري فقط + إمتداد الملف[/color]
[color=blue]Dim [/color]RegFileName [color=blue]As String[/color] = [color=darkred]"MyTestRegFile.reg"[/color]



'


كود :
[color=seagreen] 'هنا يتم وضع مسار المجلد الذي يحتوي على ملف الرجستري[/color]
[color=blue]Dim [/color]RegFileDirPath [color=blue]As String[/color] = [color=darkred]"C:\Documents and Settings\USER\Desktop"[/color]



'


كود :
[color=seagreen] 'إنشاء كائن لإجراء عملية[/color]
[color=blue]Dim [/color]RegProcess [color=blue]As New[/color] Process()



'


كود :
[color=seagreen] 'شكل النافذة التي ستقوم بالإجراء = مخفية [/color]
RegProcess.StartInfo.WindowStyle = ProcessWindowStyle.Hidden



'


كود :
[color=seagreen] 'لتحديد أن الإجراء سيتم بدون ظهور أي نافذة[/color]
RegProcess.StartInfo.CreateNoWindow = [color=blue]True[/color]



'


كود :
[COLOR=seagreen] 'cmd.exe اسم البرنامج الذي سيقوم بالإجراء
'هذا البرنامج معروف لدى المبرمجين وهو موجود في المجلد
'C:\Windows\System32
'بالكامل cmd.exeعند إنشاء كائن لإجراء عملية لا تحتاج إلى أن تظع عنوان ملف الـ
'لأنة معروف لدى النظام, فقط نكتب اسم الملف[/COLOR]
RegProcess.StartInfo.FileName = [color=darkred]"cmd.exe"[/color]



'
شكل النلفذة
طبعاً ستكون مخفية






كود :
[COLOR=seagreen] 'سيقوم بتنفيذ الأمر النصي المكتوب في الأسفل cmd.exeتعني أنه عند تشغيل ملف الـ Arguments
'DOS هو برنامج يتعامل بموجة الأوامر cmd.exeبرنامج الـ
'هو نفس البرنامج ذو الشاشة السوداء
'[color=red]Arguments[/color] لاحظ الأمر المكتوب في الكود في الأسفل
'-------------------------------
'DOS هو أحد أوامر الـ = /C cd
'يعني أن يقوم بتحديد المجلد الذي ستتم علية العملية
'هي عنوان مسار المجلد الذي يحتوي على ملف الرجستري /C cd الكلمة التي تلي
'-------------------------------
' regedit.exe /s
'هو البرنامج المسؤول عن التعامل مع سجل النظام والمقصود هنا الرجستري regedit.exe
' regedit.exe هذا الرمز يخص البرنامج /s
'هذا الرمز بمثابة أمر يدل على تشغيل الملف الذي يلي هذا الرمز
'الذي نريد دمجة في سجل النظام (RegFileName) الذي يلي هذا الرمز هو اسم ملف الرجستري [/COLOR]
RegProcess.StartInfo.[color=red]Arguments [/color]= [color=darkred]"/C cd " [/color]& RegFileDirPath & [color=darkred]" && regedit.exe /s "[/color] & RegFileName



'


كود :
[color=seagreen] ' تعني إبداء في عمل الإجراء Start[/color]
RegProcess.Start()



'


كود :
' تعني إن يبقى الإجراء لمدة 6000 ملي ثانية WaitForExit
[COLOR=seagreen]'حيث أن كل 1000 ملي ثانية = ثانية واحدة
'ستة ثواني كافية جداً لدمج ملف الرجستري في سجل النظام[/COLOR]
RegProcess.WaitForExit(6000)



'


كود :
[color=seagreen]'هنا سنتحقق من شرط لظمان التخلص من الحيز الذي يستهلة هذا الإجراء من مصادر النظام[/color]
[color=blue]If Not[/color] RegProcess.HasExited [color=blue]Then[/color]
[COLOR=seagreen]'هنا نسأل عن ما إذا قم تم إغلاق الإجراء بعد المدة المحددة
'إذا كان الإجراء لا زال يعمل ستتم عملية إنهاء لهذة العملية
'برمجياً تسمى بقتل الإجراء[/COLOR]
RegProcess.Kill()
[color=blue]End If[/color]



'


كود :
[color=seagreen]'يقوم بتحرير جميع المصادر التي كان يستخدمها هذا الكائن Close[/color]
RegProcess.Close()



'





الكود سيصبح في النهاية هكذا :

كود :
[color=blue]Private Sub[/color] Button1_Click([color=blue]ByVal [/color]sender [color=blue]As[/color] System.Object, [color=blue]ByVal [/color]e [color=blue]As [/color]System.EventArgs) [color=blue]Handles [/color]Button1.Click
[color=blue]Dim [/color]RegFileName [color=blue]As String[/color] = [color=darkred]"MyTestRegFile.reg"[/color]
[color=blue]Dim [/color]RegFileDirPath [color=blue]As String[/color] = [color=darkred]"C:\Documents and Settings\USER\Desktop"[/color]
[color=blue]Dim [/color]RegProcess [color=blue]As New Process[/color]()
[color=blue]Try[/color]
RegProcess.StartInfo.WindowStyle = ProcessWindowStyle.Hidden
RegProcess.StartInfo.CreateNoWindow = [color=blue]True[/color]
RegProcess.StartInfo.FileName = [color=darkred]"cmd.exe"[/color]
RegProcess.StartInfo.Arguments = [color=darkred]"/C cd "[/color] & RegFileDirPath & [color=darkred]" && regedit.exe /s "[/color] & RegFileName
RegProcess.Start()
RegProcess.WaitForExit(6000)
[color=blue]If Not[/color] RegProcess.HasExited [color=blue]Then[/color]
RegProcess.Kill()
[color=blue]End If[/color]
RegProcess.Close()
[color=blue]Catch [/color]ex [color=blue]As [/color]Exception
MessageBox.Show([color=darkred]"Unable to update the registry :"[/color] & vbNewLine & ex.Message, [color=darkred]"Registry Update Error"[/color], MessageBoxButtons.OK, MessageBoxIcon.Error)
[COLOR=blue]End Try
End Sub[/COLOR]



'






مرفق مشروع بالفيجوال ستيديو 2008


تحياتي للجميع ...


الملفات المرفقة
.rar   RegFileWithDosCommand.rar (الحجم : 108.68 ك ب / التحميلات : 87)
}}}
تم الشكر بواسطة:


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  [شرح] اتصال بقاعدة بيانات اكسيس , اضافة بيان , تعديل بيان , حذف بيان , عرض البيانات . ahmed salam 25 38,206 23-02-22, 06:04 PM
آخر رد: رضوان الجماعي
  طريقة عمل نسخة لتثبيت فيجوال ستوديو بدون نت معاند الحظ 12 8,070 11-12-21, 04:26 PM
آخر رد: اسلام الكبابى
  معلومة :: تعلم كيف تحفظ صورة في My.Settings بدون الإحتياج إلى مسارها! أسامة أحمد 4 6,080 18-07-21, 02:53 AM
آخر رد: kebboud
  دمج قاعدة بيانات SQL Server 2008 مع المشروع بالـ VBNET snipercoder 4 8,184 12-11-20, 06:01 PM
آخر رد: lion4
  [درس فيديو] كيف تحول اي قاعدة بيانات اكسس الى SQL aljzazy 3 3,287 17-04-20, 09:27 PM
آخر رد: الوايلي
  [درس فيديو] كيف تحول اي قاعدة بيانات اكسس الى mysql aljzazy 0 2,312 10-04-20, 09:05 PM
آخر رد: aljzazy
  [VB.NET] كيفية استخدام اداوات ديف اكسبريس devexpressلادخال السجلات الى قاعدة بيانات نوع اكسس 13adam123 0 2,578 29-03-20, 12:50 PM
آخر رد: 13adam123
Exclamation كيفية تجاوز ظهور الخطا في Global.WindowsApplication1.My.Resources الرائد 0 2,546 13-08-19, 11:40 PM
آخر رد: الرائد
  كيفية عمل برنامج للأذان + قاعدة بيانات لـ 252 دولة و 9512 مدينة ! : مبرمج أوتار 4 23,502 21-01-19, 03:43 PM
آخر رد: elgokr
  قاعدة بيانات مضمنة مع البرنامج viv 4 4,179 27-09-18, 08:01 PM
آخر رد: viv

التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم