PDA

View Full Version : مشکل در نوشتن و خواندن در ریجستری



com.ha.za
پنج شنبه 22 بهمن 1388, 21:06 عصر
یه نمونه سورس دارم که به شکل زیر یه تابع تعریف کرده و به خوبی کار میکته و زمانه که من میخوام تو برنامه اصلیم ازش استفاده کنم
خطا میگیره

function GetRegistryData(RootKey: HKEY; Key,Value: string): variant;
var
Reg: TRegistry;
RegDataType: TRegDataType;
DataSize, Len: integer;
s: string;
label cantread;
begin


خط سوم یعنی reg : TRegistry خطا میده باید چیکارش کنم ؟
متن خطا اینه
undeclared inentifier:'TRegistry'

Felony
پنج شنبه 22 بهمن 1388, 21:51 عصر
کتابخانه Registry رو به uses اضافه کنید .

com.ha.za
جمعه 23 بهمن 1388, 01:53 صبح
میشه بگید چطور نام کتابخانه اضافه میشه ؟:متفکر:

Mahmood_M
جمعه 23 بهمن 1388, 03:08 صبح
میشه بگید چطور نام کتابخانه اضافه میشه ؟
منظور دوستمون قسمت Uses هست ، در بالای یونیت مربوط به کدهای فرم اصلی یک قسمت با عنوان Uses وجود داره ، نام Registry رو به اون قسمت اضافه کنید ...

موفق باشید ...

com.ha.za
جمعه 23 بهمن 1388, 09:44 صبح
ممنون متوجه شدم ولی با یه مشکل دیگه مواجه شدم زمانی که میخوام یه مقدارو از ریجستری چک کنم اکه اون جیزی که من قبلا باید ایجاد میکردم وجود نداشته باشه خطا میده ، چطور میتونم از وجود یه فایل در ریجستری آگاه شوم که بعد از مطمئن شدن از وجود آن مقدارشو چک کنم:عصبانی++:؟

Mahmood_M
جمعه 23 بهمن 1388, 15:01 عصر
کلاس TRegistry یک تابع به نام KeyExists داره که همین کار رو انجام میده ، آدرس کلید رو به تابع می دید و وجود اون رو بررسی می کنه ، اگر وجود داشت مقدار True و اگر وجود نداشت مقدار False برمی گردونه ...

موفق باشید ...

com.ha.za
جمعه 23 بهمن 1388, 21:11 عصر
استفاده کردم ولی بازم خطای اول و میده ، کلاس ریجستری رو تعریف کردم متن خطا undeclared inentifier:'keyexist'

اگه میشه کاملتر توضیح بدید و همون خط کدش و بذارید

Mahmood_M
جمعه 23 بهمن 1388, 21:52 عصر
به مثال زیر دقت کنید :
procedure TForm1.BitBtn1Click(Sender: TObject);
var
R : TRegistry;
S : String;
begin
R := TRegistry.Create;
R.RootKey := HKEY_LOCAL_MACHINE;
if R.KeyExists('\SOFTWARE\Microsoft\Windows') then
begin
R.OpenKey('\SOFTWARE\Microsoft\Windows', False);
S := R.ReadString('MyStringValue');
R.CloseKey;
end;
end;

توصیه می کنم برای آشنایی بیشتر با کلاس TRegistry این مقاله (http://barnamenevis.org/forum/showthread.php?t=92863) رو بخونید ...

موفق باشید ...

com.ha.za
جمعه 23 بهمن 1388, 22:21 عصر
متشکرم دوست عزیز
مشکلم حلم شد ولی لینک دانلود که گذاشتید مشکل داشت

Mahmood_M
جمعه 23 بهمن 1388, 23:00 عصر
خواهش می کنم ، خوشحالم که مشکلتون حل شد ...
ولی لینک سالمه ، وقتی روش کلیک می کنید به یک صفحه دیگه می رید که اونجا باید روی "دریافت" کلیک کنید ، سمت راست صفحه ...

موفق باشید ...

com.ha.za
شنبه 24 بهمن 1388, 13:19 عصر
باز با یه مشکل دیگه روبرو شدم
کدی که شما گذا شتید کلید و چک میکنه و نمیدونم چطور محتویات داخل آن چطور چک میشه

اگه ممکنه HKEY_LOCAL_MACHINE\SOFTWARE
و فرض کنید داخل اون یه AutoRun هست که میخوایم از وجود اون مطمئن شیم و بعد مقدارشو چک کنیم حالا چه کدی نیاز داره
شرمنده که من صفرم.........

لینک و دوباره چک کردم وقتی دریافت فایل و میزنی پنجره دیباگر میاد و همه پنجره های باز و میبنده

merced
شنبه 24 بهمن 1388, 13:53 عصر
if r.ValueExist ....

com.ha.za
شنبه 24 بهمن 1388, 21:21 عصر
آقا من صفر صفرم باید دقیق تر بگید
به این شکل نوشتم ولی درست نیست ، مشکل چیه
ممنون
procedure TForm1.Button1Click(Sender: TObject);
Var R,b : TRegistry;

S : String;

begin
b:= TRegistry.Create;
R := TRegistry.Create;
R.RootKey := HKEY_LOCAL_MACHINE;
if R.KeyExists('\SOFTWARE\')=true then

begin

if b.ValueExists('test')=true then
begin
showmessage('1');


R.CloseKey;

end
else
showmessage('2');

end;
end.
end;

Mahmood_M
شنبه 24 بهمن 1388, 21:47 عصر
آقا من صفر صفرم باید دقیق تر بگید
به این شکل نوشتم ولی درست نیست ، مشکل چیه
ممنون
اون متغیر b برای چی هست ؟
به این شکل بنویسید :
procedure TForm1.BitBtn1Click(Sender: TObject);
Var
R : TRegistry;
S : String;
begin
R := TRegistry.Create;
R.RootKey := HKEY_LOCAL_MACHINE;
if R.KeyExists('\SOFTWARE\') = True then
begin
if R.ValueExists('test') = True then
begin
ShowMessage('1');
R.CloseKey;
end
else
ShowMessage('2');
end;
end;

لینک و دوباره چک کردم وقتی دریافت فایل و میزنی پنجره دیباگر میاد و همه پنجره های باز و میبنده
احتمالا مرورگرتون با فایلهای PDF مشکل داره ، اگه از Internet Explorer استفاده می کنید ، روی " دریافت فایل " راست کلیک کنید و گزینه ی Save Target as رو بزنید ، اگر هم از FireFox استفاده می کنید بعد از راست کلیک روی Save Link as کلیک کنید ...

موفق باشید ...

com.ha.za
شنبه 24 بهمن 1388, 22:29 عصر
کد شمارو کپی کردم ولی چه هست و چه نیست پیغام نیست و میده ، فایل و دانلود کردم
خیلی خوبه میخونمش امیدوارم که مشکلم حل شه ، اگه نشد باز دوباره مزاحم میشم
مرسی دوست عزیز

com.ha.za
شنبه 24 بهمن 1388, 23:12 عصر
فایل و خوندم خیلی عالی بود فکر کنم این دفعه دیگه حل شد
فقط اگه یه راهنمایی در مورد اینکه بهتره از چه آدرس هایی و با چه نام هایی استفاده کنیم ممنون میشم
یه برنامه دارم که میخوام سریال هارد مشتری رو کد کنم و بذارم تو ریجستری و چکش کنم ، چه آدرسهایی از ریجستری دیرتر لو میره و چه نام هایی بهتره

اگه تونستید قسمت دوم و هم بذارید خیلی عالیه
متشکرم

Mahmood_M
یک شنبه 25 بهمن 1388, 16:01 عصر
فقط اگه یه راهنمایی در مورد اینکه بهتره از چه آدرس هایی و با چه نام هایی استفاده کنیم ممنون میشم
یه برنامه دارم که میخوام سریال هارد مشتری رو کد کنم و بذارم تو ریجستری و چکش کنم ، چه آدرسهایی از ریجستری دیرتر لو میره و چه نام هایی بهتره
لو رفتن آدرس کلید در رجیستری تقریبا بستگی به نام کلید و یا مکانش نداره ، کسی که می خواد به عنوان مثال برنامه رو کرک کنه با یک نرم افزار مثلا Registry Monitor رجیستری رو تحت نظر می گیریه و اینطوری می فهمه که شما قصد خوندن و یا ویرایش کردن کدوم کلید از رجیستری رو دارید ، مثل کاری که آنتی ویروسها انجام میدن ...
برای امنیت بیشتر باید روی کد کردن سریال بیشتر کار کنید و سعی کنید که برای ایجاد امنیت از روشهای ترکیبی استفاده کنید ، مثلا یک قسمت در رجیستری باشه و قسمتی مثلا در یک فایل یا ...
این موارد کار Cracker رو سخت می کنه ...

برای آشنایی با روشهای ایجاد امنیت سئوالتون رو در بخش " امنیت در نرم افزار و برنامه نویسی (http://barnamenevis.org/forum/forumdisplay.php?f=66) " مطرح کنید ...

اگه تونستید قسمت دوم و هم بذارید خیلی عالیه
راستش این مقاله برای چند سال پیشه ولی اگه وقت کردم حتما این کار رو انجام میدم ...

موفق باشید ...

com.ha.za
شنبه 22 اسفند 1388, 09:31 صبح
تو برنامم برای فعال سازی تو ریجستری یه چیزی ایجاد میکنم و یه مقدار داخل اون قرار میدم و زمانی که برنامه اجرا میشه اگه اون مقدار وجود داشت وارد برنامه میشه وگرنه کد فعال سازی میخواد ، حالا رو چند تا سیستم امتحان کردم درست کار میکنه ولی رو یکی از سیستم ها مقدار و که ایجاد میکنه ایجاد میشه ولی هر بار با وجود فعال بودن نرم افزار بازم پنجره فعال سازی باز میشه ، مشکل از کجاست ؟

Felony
شنبه 22 اسفند 1388, 10:25 صبح
شاید دسترسی خواندن رجیستری از برنامتون گرفته شده .

com.ha.za
شنبه 22 اسفند 1388, 16:02 عصر
ممنون چون کد و از یه جای دیگه کپی کرده بودم موقع خواندن یه جا اشتباه بود