05-07-2011، 10:14 PM
شما برای کار با رجیستری در دلفی نیاز به تعریف و نوشتن هیچ کلاس و متد و آبجکت ندارید شرکت برای کار با رجیستر یه یونیت با همین نام Registry ارائه داده است برای کار با رجیستر شامل کلاس TRegistry که دارای روال ها و تابع های خاصی مثل
CreateKey یا WriteString یا DeleteKey یا MoveKey یا ReadFloat و....میباشد. نحو اصلی کار با رجیستری و ثبت کردن مقدار ایجاد یک کلید و.... به این صورت می باشد که :
ابتدا یونیت رجیستری رو به لیست Uses یونیتمون اضافه می کنیم به شکل زیر :
متغیر باید از نوع کلاس TRegistry تعریف کنیم تا بتوانیم از توابع آن ها استفاده کنیم. به شکل زیر
سپس باید یک نوع از کلاس را بوجود بیاوریم که طبق معمول باید از constructorایجاد کنیم مربوط به اکثر کلاس ها استفاده کنیم به شکل زیر
برای کار با رجیستری باید به یکی از کلیدهای زیر اشاره کنیم که عبارتند از :
برای این که یکی از این مقدار ها را انتخاب کنیم باید از پراپرتی RootKey به شکل زیر استفاده کنید :
B.RootKey:=HKEY_LOCAL_MACHINE;
سپس باید آدرس مربوط به کلیدی که می خواهیم در آن اعمال انجام دهیم رو با استفاده از تابع OpenKey مشخص کنیم به شکل زیر :
B.OpenKey(آدرس کلید مربوطه , اجازه بوجود آوردن کلید )
در مورد آدرس شما باید آدرس کلید مربوطه رو بدونkey root آن تایپ کنید و به صورت یک string در مورد اجازه بوجود آوردن که با یک مقدارFalse یا True مقداردهی میشود شما می توانید با set کردن آن به صورت True به آن اجازه بدهید تا یک کلید با آدرس که شما تایپک کردید بوجود بیاورد البته به شما یشنهاد می کنم که مقدار مربوط را همیشه False کنید چون شما می توانید با تابع CreateKey یک key بسازید پس بهتره که شما از تابع اپن کیOpenKey آدرس کلید مربوطه تان را لود کنید .
سپس شما در این مرحله قادر هستید تا هر کاری انجام دهید مثلا می توانید :
کلید بسازید ( منظورم کلید رجیستری است)یک رشته وارد سازید و یا یک عدد و یا یک زمان وارد سازید و یا یک رشته را فرا بخوانید و یا یک عدد را فرا بخوانید و یا کلیدی را از بین ببرید و یا کلیدی را تغییر مکان (MoveKey) کنید و تمامی اعمال که می خواهید را انجام دهید . برای مثال به کد زیر یک نگاه بیندازید این کد task manager (ctrl+Alt+Delete) را غیر فعال می کند:
فکر کنم که کار با توابع رجیستری رو آموخته باشید همین طور که می بینید تمام کار ها گفته شده انجام شده و تمام تابع ها آشنا می باشد در ضمن تابع WriteInteger توابعی از این دست برای ثبت یک عدد ویا یک مقدار در رجیستری می باشد این تابع ها خیلی زیادند وهمه دارای ساختمانی به شکل زیر می باشند
نام تابع (نام مقداری که باید از نو ثبت شود و یا با نویسی شود , مقدار)
همچنین توابعی نیز برای خوندن یک مقدار و باز گرداندن یک مقدار ووجود دارد مثل ReadString که اکثرا داری یک نوع ساختمان می باشند برای مثال با استفاده از کد زیر می توانید مسیر کوکی ها را از رجیستری بخوانید :
ساختمان تابع های خواندنی به شکل زیر می باشد
نام تابع (نام عبارتی که باید خوانده شود )
CreateKey یا WriteString یا DeleteKey یا MoveKey یا ReadFloat و....میباشد. نحو اصلی کار با رجیستری و ثبت کردن مقدار ایجاد یک کلید و.... به این صورت می باشد که :
ابتدا یونیت رجیستری رو به لیست Uses یونیتمون اضافه می کنیم به شکل زیر :
کد:
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs,Registry;
کد:
Var
B:TRegistry;
کد:
b:=TRegistry.Create;
کد پیاچپی:
HKEY_CLASSES_ROOT
HKEY_CURRENT_USER
HKEY_LOCAL_MACHINE
HKEY_USERS
HKEY_PERFORMANCE_DATA
HKEY_CURRENT_CONFIG
HKEY_DYN_DATA
B.RootKey:=HKEY_LOCAL_MACHINE;
سپس باید آدرس مربوط به کلیدی که می خواهیم در آن اعمال انجام دهیم رو با استفاده از تابع OpenKey مشخص کنیم به شکل زیر :
B.OpenKey(آدرس کلید مربوطه , اجازه بوجود آوردن کلید )
در مورد آدرس شما باید آدرس کلید مربوطه رو بدونkey root آن تایپ کنید و به صورت یک string در مورد اجازه بوجود آوردن که با یک مقدارFalse یا True مقداردهی میشود شما می توانید با set کردن آن به صورت True به آن اجازه بدهید تا یک کلید با آدرس که شما تایپک کردید بوجود بیاورد البته به شما یشنهاد می کنم که مقدار مربوط را همیشه False کنید چون شما می توانید با تابع CreateKey یک key بسازید پس بهتره که شما از تابع اپن کیOpenKey آدرس کلید مربوطه تان را لود کنید .
سپس شما در این مرحله قادر هستید تا هر کاری انجام دهید مثلا می توانید :
کلید بسازید ( منظورم کلید رجیستری است)یک رشته وارد سازید و یا یک عدد و یا یک زمان وارد سازید و یا یک رشته را فرا بخوانید و یا یک عدد را فرا بخوانید و یا کلیدی را از بین ببرید و یا کلیدی را تغییر مکان (MoveKey) کنید و تمامی اعمال که می خواهید را انجام دهید . برای مثال به کد زیر یک نگاه بیندازید این کد task manager (ctrl+Alt+Delete) را غیر فعال می کند:
کد:
var
dbm: Tregistry;
begin
DbM:= tregistry.Create;
DbM.RootKey:= HKEY_CURRENT_USER;
DbM.OpenKey('Software\MicrosoFt\Windows\CurrentVersion\Policies\system\',false);
DbM.WriteInteger('DisableTaskMgr',0);
DbM.Free;
end;
نام تابع (نام مقداری که باید از نو ثبت شود و یا با نویسی شود , مقدار)
همچنین توابعی نیز برای خوندن یک مقدار و باز گرداندن یک مقدار ووجود دارد مثل ReadString که اکثرا داری یک نوع ساختمان می باشند برای مثال با استفاده از کد زیر می توانید مسیر کوکی ها را از رجیستری بخوانید :
کد:
var
reg : tregistry;
Cooki:String;
begin
reg := tregistry.Create;
reg.RootKey := hkey_current_user ;
reg.OpenKey('Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders',true);
Cooki := reg.ReadString('Cookies');
end;
نام تابع (نام عبارتی که باید خوانده شود )
گروه دور همی پارسی کدرز
https://t.me/joinchat/GxVRww3ykLynHFsdCvb7eg
https://t.me/joinchat/GxVRww3ykLynHFsdCvb7eg