تقييم الموضوع :
  • 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 ك ب / التحميلات : 49)
}}}}
تم الشكر بواسطة:


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  [شرح] اتصال بقاعدة بيانات اكسيس , اضافة بيان , تعديل بيان , حذف بيان , عرض البيانات . ahmed salam 20 9,014 26-09-16, 08:12 AM
آخر رد: abumuhannadzym
  طباعة بيانات موجودة في برنامج على ( 2003 Microsoft Office Word ) abulayth 1 266 11-09-16, 07:20 AM
آخر رد: أبووسم
  مشكلة في الاتصال بقاعدة بيانات Mr.Fenix 2 183 19-08-16, 09:34 AM
آخر رد: Mr.Fenix
  طريقة مميزة لعمل إعدادات Setting لحفظ اعدادات برنامجك بدون أكواد kslawy 6 1,642 26-05-16, 12:07 PM
آخر رد: CLARO
  (عنوان معدل) عمل شاشة البداية بدون كود ولا تايمر ولا اى حاجه mero5000 5 1,116 23-08-15, 12:50 AM
آخر رد: lolo queen
  [VB.NET] الأتصال بقاعدة بيانات اكسس2007 مع فجوال 2010 raaddawood 1 571 27-05-15, 03:40 PM
آخر رد: قناص المدينة
  [VB.NET] كيفية انشاء قاعدة بيانات برمجيا VB.net (صوت وصورة) أحمد النجار 0 722 18-01-15, 06:59 AM
آخر رد: أحمد النجار
  [مقال] تشغيل برمجيات الدوت نت بدون تنصيب النت فروم ويرك m0075 13 4,110 13-02-14, 08:29 PM
آخر رد: Omar Mekkawy
  كيفية عمل برنامج للأذان + قاعدة بيانات لـ 252 دولة و 9512 مدينة ! : مبرمج أوتار 1 3,610 15-07-13, 04:36 PM
آخر رد: مبرمج بلا حدود
  خطوات بسيطه لجعل الفورم على شكل صورة معينه و بشكل اكثر احترافية - بدون أدوات خارجية السكر المغرور 4 1,692 08-05-13, 01:20 AM
آخر رد: السكر المغرور

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


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