| الموضوع السابق | الموضوع التالي |
الغرض
الاتصال بسجل النظام (Windows Registry) في حاسوب آخر على الشبكة.
الصيغة
function ConnectToRemoteRegistry(const ComputerName: string;
RegKey: HKEY; var RegKeyHandle: HKEY):
Boolean;
procedure DisconnectRemoteRegistry(RegKeyHandle: HKEY);
function OpenRemoteSubKey(const RegKeyHandle: HKEY;
const RegSubKey: string; var RegSubKeyHandle:
HKEY): Boolean;
procedure CloseRemoteSubKey(RegSubKeyHandle: HKEY);
الوسائط (Parameters)
الدالة ConnectToRemoteRegistry:
| ComputerName | اسم الحاسوب المطلوب الاتصال بسجل النظام فيه. يمكن أن يكون اسم الحاسوب كما هو (ComputerName) أو مسبوقاً بشرطتين مائلتين (\\ComputerName) | |
| RegKey | بارامتر من النوع HKEY يحدد المفتاح الأساسي المطلوب فتحه في سجل النظام على الحاسوب البعيد، و يجب أن يكون أحد المفاتيح الأساسية التالية المعرفة في النظام Windows:
HKEY_CLASSES_ROOT | |
| RegKeyHandle | بارامتر متغير (var) من النوع HKEY حيث سيتم تخزين مقبض المفتاح في حال نجاح الدالة. |
الإجراء DisconnectRemoteRegistry:
| RegKeyHandle | بارامتر من النوع HKEY يمثل مقبض المفتاح الأساسي الذي تم فتحه سابقاً باستعمال الدالة ConnectToRemoteRegistry. |
الدالة OpenRemoteSubKey:
| RegKeyHandle | بارامتر من النوع HKEY يمثل مقبض المفتاح الأساسي الذي تم فتحه سابقاً باستعمال الدالة ConnectToRemoteRegistry. | |
| RegSubKey | المسار الكامل للمفتاح الفرعي المطلوب فتحه - حيث توجد القيمة أو القيم المطلوب قراءتها أو حفظها- مثلاً: Hardware\Description\System\CentralProcessor. | |
| RegSubKeyHandle | بارامتر متغير (var) من النوع HKEY حيث سيتم تخزين مقبض المفتاح الفرعي في حال نجاح الدالة. |
الإجراء CloseRemoteSubKey:
| RegSubKeyHandle | بارامتر من النوع HKEY يمثل مقبض المفتاح الفرعي الذي تم فتحه سابقاً باستعمال الدالة OpenRemoteSubKey. |
الشرح
هذه الدوال و الإجراءات تمثل جزءاً من الخطوات اللازمة للوصول إلى سجل النظام (Windows Registry) الموجود على حاسوب آخر لغرض الحصول على معلومات مخزنة في سجل نظام ذلك الحاسوب، أو حفظ (تخزين) معلومات فيه.
استعمل الدالة ConnectToRemoteRegistry لتأسيس اتصال بأحد المفاتيح الأساسية في سجل نظام الحاسوب البعيد. هذه الدالة تعيد True في حالة نجاحها في تأسيس الاتصال، مع تخزين المقبض الذي يشير إلى ذلك المفتاح الأساسي في البارامتر المتغير RegKeyHandle، و تعيد False إذا فشلت في ذلك، و تكون قيمة RegKeyHandle صفراً (0).
استعمل الإجراء DisconnectRemoteRegistry لقطع الاتصال بسجل نظام الحاسوب البعيد بعد الانتهاء من فراءة أو كتابة (حفظ) قيمة واحدة أو أكثر تابعة لمفتاح فرعي واحد أو أكثر. عند استدعاء هذا الإجراء يجب تمرير قيمة مقبض المفتاح الأساسي الذي تم فتحه سابقاً باستعمال الدالة ConnectToRemoteRegistry.
استعمل الدالة OpenRemoteSubKey لفتح المفتاح الفرعي الذي يحتوي على القيمة أو القيم التي تريد قراءتها أو حفظها. هذا المفتاح الفرعي يجب أن يكون تابعاً للمفتاح الأساسي الذي تم فتحه سابقاً باستعمال الدالة ConnectToRemoteRegistry. هذه الدالة (OpenRemoteSubKey) تعيد True في حالة نجاحها في فتح المفتاح الفرعي، مع تخزين المقبض الذي يشير إلى ذلك المفتاح الفرعي في البارامتر المتغير RegSubKeyHandle، و تعيد False إذا فشلت في ذلك، و تكون قيمة RegSubKeyHandle صفراً (0).
استعمل الإجراء CloseRemoteSubKey لإغلاق المفتاح الفرعي بعد الانتهاء من فراءة أو حفظ قيمة واحدة أو أكثر تابعة لذلك المفتاح. عند استدعاء هذا الإجراء يجب تمرير قيمة مقبض المفتاح الفرعي الذي تم فتحه سابقاً باستعمال الدالة OpenRemoteSubKey.
ما بين فتح المفتاح الفرعي (OpenRemoteSubKey) و إغلاقه (CloseRemoteSubKey) يمكنك استدعاء دوال قراءة المعلومات البعيدة و إجراءات كتابة المعلومات البعيدة للحصول على مختلف أنواع البيانات الموجودة في سجل نظام الحاسوب البعيد أو حفظها فيه.
تبقى نقطة أخيرة و مهمة و هي أن أياً من الدوال و الإجراءات المذكورة هنا، أو دوال فراءة أو كتابة المعلومات قد تفشل إذا كانت قيود الأمان المطبقة على سجل النظام في الحاسوب البعيد لا تسمح بمثل تلك العمليات.
مثال
const
APP_REGISTRY_KEY = 'software\Daniyah Software Center\SchoolMoney0100SE';
REG_SK_GENERAL = APP_REGISTRY_KEY + '\General';
var
RegKeyHandle, RegSubKeyHandle: HKEY;
SchoolYear: Integer;
LastUser: string;
begin
try
if ConnectToRemoteRegistry('\\DANIYAH-CENTER',
HKEY_CURRENT_USER, RegKeyHandle) then begin
try
if OpenRemoteSubKey(RegKeyHandle, REG_SK_GENERAL,
RegSubKeyHandle) then begin
SchoolYear := ReadRegInteger(RegSubKeyHandle,
'SchoolYear');
MsgBox(IntToStr(SchoolYear));
LastUser := ReadRegString(RegSubKeyHandle,
'LastUser');
MsgBox(LastUser);
WriteRegString(RegSubKeyHandle, 'LastUser',
'ناجي إبراهيم');
// Result3 := ReadRegXXX ....
// ....
end;
finally
CloseRemoteSubKey(RegSubKeyHandle);
end;
end;
finally
DisconnectRemoteRegistry(RegKeyHandle);
end;
end;
أعلى الصفحة
| الموضوع السابق | الموضوع التالي |