View Full Version : روش نوشتن وخواندن اطلاعات دررجيستر
bps20590
یک شنبه 12 خرداد 1387, 20:33 عصر
باسلام
دوستان عزيز من مي خواهم يك كدرادرداخل رجيستر بنويسم سپس براي اجراي آن را ازداخل رجيستر بخوانم لطفا دستورات آنرا اگر ممكن است بهم بگوئيد ويا راهنمايي بكنيد
delphiprog3000
یک شنبه 12 خرداد 1387, 20:54 عصر
با سلام .
3 رویداد دارد.
که 1رویداد در Oncreate فرم نوشته میشود.
1 رویداد در یک Button که نوشت را بر عهده دارد.
1 رویداد که در یک Button دیگر برای خواندن استفاده میشود.
در قسمت Const فرمتان آدرس رجیستری را میدهید..
این کد:
unit reg1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs,registry, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
const root='software\apibook\delphi';
var
Form1: TForm1;
reg:tregistry;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
begin
reg:=tregistry.Create;
reg.RootKey:=HKEY_CURRENT_USER
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
reg.OpenKey(root,true);
reg.WriteInteger('ala',330);
showmessage(reg.CurrentPath);
//if reg.valueExists('HKEY_CURRENT_USER')=true then
//form1.Caption:='yesfind';
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
reg.OpenKeyReadOnly(root);
if reg.ValueExists('ala') then
form1.Caption:=inttostr(reg.ReadInteger('ala'));
end;
موفق باشید.............
B_YAGHOBI
یک شنبه 12 خرداد 1387, 21:00 عصر
نوشتن در رجيستري
procedure DoAppToRun(RunName, AppName: string);
var
Reg: TRegistry;
begin
Reg := TRegistry.Create;
with Reg do
begin
RootKey := HKEY_LOCAL_MACHINE;
OpenKey('Software\Microsoft\Windows\CurrentVersion \Run', True);
WriteString(RunName, AppName);
CloseKey;
Free;
end;
end;
بررسي رجيستري
function IsAppInRun(RunName: string): Boolean;
var
Reg: TRegistry;
begin
Reg := TRegistry.Create;
with Reg do
begin
RootKey := HKEY_LOCAL_MACHINE;
OpenKey('Software\Microsoft\Windows\CurrentVersion \Run', False);
Result := ValueExists(RunName);
CloseKey;
Free;
end;
end;
bps20590
یک شنبه 12 خرداد 1387, 23:10 عصر
دوست عزيز (كاربردائمي)ضمن تشك تونستم داخل رجيستري بنويسم ولي وقتي ميخواهم محتويات كليدهاي داخل رجيستري راكه نوشته ام بخوانم پيغام خطا مي دهد
پيغام خطا عبارتست از
Access Violation at address 00445615 in madule prjtx.exe read of address 000065
B_YAGHOBI
یک شنبه 12 خرداد 1387, 23:37 عصر
دوست عزيز (كاربردائمي)ضمن تشك تونستم داخل رجيستري بنويسم ولي وقتي ميخواهم محتويات كليدهاي داخل رجيستري راكه نوشته ام بخوانم پيغام خطا مي دهد
پيغام خطا عبارتست از
Access Violation at address 00445615 in madule prjtx.exe read of address 000065
كدي كه براي اينكار نوشتي اينجا قرار بده. حتما از متغييري استفاده ميكني كه يا ساخته نشده
يا Free شده.
bps20590
دوشنبه 13 خرداد 1387, 07:28 صبح
اين كد نوشتن هستش
Reg:=tregistry.Create;
Reg.RootKey:=HKEY_CURRENT_USER ;
reg.OpenKey(root,true);
reg.WriteString('sn',edsn.Text);
reg.WriteString('ac',edaccode.text);
showmessage(reg.CurrentPath);
reg.Free;
اين هم كد خواندن
reg.OpenKeyReadOnly(root);
if reg.ValueExists('sn') then
//form1.Caption:=inttostr(reg.ReadInteger('ala'));
s:=reg.ReadString('sn');
ShowMessage(s);
اصغر (پآچ)
دوشنبه 13 خرداد 1387, 13:17 عصر
سلام دوست من
من یه روش برای خوندن و نوشتن در رجیستری دارم. کدش رو برات میزارم اما حتما به حروف قرمز توجه کن که داخل فرمت داشته باشی.
کد هم اینه:
unit Unt_Main;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, StdCtrls, ComObj, Registry;
type
TFrm_Main = class(TForm)
Label2: TLabel;
Label1: TLabel;
procedure FormCreate(Sender: TObject);
procedure FormShow(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Frm_Main: TFrm_Main;
implementation
{$R *.dfm}
procedure TFrm_Main.FormShow(Sender: TObject);
begin
Label1.Caption := GetRegStringValue('\Software\Secretariat\','Title' ,HKEY_CLASSES_ROOT);
Label2.Caption := GetRegStringValue('\Software\Secretariat','City',H KEY_CLASSES_ROOT);
end;
procedure TFrm_Main.FormCreate(Sender: TObject);
var
Reg: TRegistry;
begin
En := GetRegStringValue('\Software\Secretariat','End',HK EY_CLASSES_ROOT);
Reg := TRegistry.Create;
try
Reg.RootKey := HKEY_CLASSES_ROOT;
if Reg.OpenKey('\Software\Secretariat', True) then
begin
Reg.WriteString('End', 'Yes');
Reg.CloseKey;
end;
finally
Reg.Free;
inherited;
end;
end;
end.
کد های آبی برای خواندن از ریجستری استفاده می شه و کد های سبز برای نوشتن در رجیستری. کد های قرمز رو هم به صورت دستی به پروژه ات اضافه کن.
موفق و موید باشی
B_YAGHOBI
دوشنبه 13 خرداد 1387, 13:53 عصر
دوست عزيز (كاربردائمي)ضمن تشك تونستم داخل رجيستري بنويسم ولي وقتي ميخواهم محتويات كليدهاي داخل رجيستري راكه نوشته ام بخوانم پيغام خطا مي دهد
پيغام خطا عبارتست از
Access Violation at address 00445615 in madule prjtx.exe read of address 000065
اين خطا در قسمت خواندن اتفاق مي افتد چون متغيير Reg را Create نكردي و Root آنرا معين
نكردي اين دو خط را اول كد خواندن بايد اضافه كني :
Reg:=tregistry.Create;
Reg.RootKey:=HKEY_CURRENT_USER ;
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.