PDA

View Full Version : سوال: گرفتن اطلاعات از یک کلید خاص در رجیستری



daniyal_1363
یک شنبه 09 خرداد 1389, 19:23 عصر
سلام

من کار با Regedit رو در ویندوز بلدم و در Vb6 با نمونه های زیاد سایت یه چیزایی یاد گرفتم ولی نتونستم بفهمم چطوری میشه از یه کلید خاص اطلاعات گرفت

مثلاً :

تو این شاخه

HKEY_CURRENT_USER\Software\Microsoft\Windows\Curre ntVersion\Policies\Explorer

کلید زیر وجود داره که از نوع DWORD Value

NoControlPanel

حالا میخوام مقدار این کلید رو توی یه لیبل بریزم

یعنی اگه 1 هست -- مقدار Label1.Caption = 1 قرار بگیره و اگه 0 -- مقدار Label1.Caption = 0 قرار بگیره و اگه کلاً کلید NoControlPanel وجود نداره Label1.Caption بازم برابر با 0 قرار بگیره


چه کنم ؟

ممنون میشم اگه با مثال توضیح کامل بدین که متوجه بشم

M.T.P
یک شنبه 09 خرداد 1389, 20:58 عصر
با سلام
این سورس Read و Write در رجیستری هست.

daniyal_1363
یک شنبه 09 خرداد 1389, 21:42 عصر
با سلام
این سورس Read و Write در رجیستری هست.

ممنون از توجه شما

ولی این کد کار نمیکنه

در ضمن من یه کد ساده میخوام

xxxxx_xxxxx
یک شنبه 09 خرداد 1389, 22:12 عصر
برای خواندن مقادیر از رجیستری بعد از اینکه یک مسیر رو با تابع RegOpenKeyEx باز کردید، با استفاده از تابع RegQueryValueEx میتونید محتوی یک Value رو بازیابی کنید.

مقاله با سورس كامل آموزش رجيستري (http://barnamenevis.org/forum/showthread.php?t=181996)

daniyal_1363
یک شنبه 09 خرداد 1389, 22:35 عصر
برای خواندن مقادیر از رجیستری بعد از اینکه یک مسیر رو با تابع RegOpenKeyEx باز کردید، با استفاده از تابع RegQueryValueEx میتونید محتوی یک Value رو بازیابی کنید.

مقاله با سورس كامل آموزش رجيستري (http://barnamenevis.org/forum/showthread.php?t=181996)

خیلی خیلی ممنون

ولی این آدرس رو قبلاً رفتم و متوجه نشدم چه جوریه؟

میشه آدرسی که دادم رو به مثال تبدیل کنید و بزارین همین جا

xxxxx_xxxxx
دوشنبه 10 خرداد 1389, 00:19 صبح
سلام،
بازیابی مقادیر String با DWORD کمی متفاوت هست. (از لحاظ فرمت خروجی)

این تابع RegQueryValueEx:


Private Declare Function RegQueryValueEx Lib "advapi32.dll" Alias "RegQueryValueExA" ( _
ByVal hKey As Long, _
ByVal lpValueName As String, _
ByVal lpReserved As Long, _
lpType As Long, _
lpData As Any, _
lpcbData As Long) As Long
خب. وقتی تابع رو فراخوانی میکنید باید دستگیره ای (Handle) که توسط RegOpenKeyEx بدست آوردید رو به عنوان پارامتر اول به این تابع بدید.

نام اون Value ای که میخواید در رجیستری مقدارش رو برگردونید رو به عنوان پارامتر دوم به تابع بدید. (همون NoControlPanel)

پارامتر سوم مقدارش رو صفر بدید.(lpReserved)

اما پارامتر چهارم (lpType)، جای این پارامتر یک متغیر بزارید. بعد از اجرای تابع، اون متغیر مقداردهی میشه و مقدارش نشون دهنده نوع اون Value هست. (مثلاً String ، Binary، DWORD و ...)

پارامتر پنجم (lpData) بعد از فراخوانی تابع همون محتوای NoContolPanel رو به خودش میگیره.

پارامتر آخر هم سایز فضایی هست که اون داده باید توش قرار بگیره. چون مقدار موردنظر شما از نوع DWORD هست حداقل این عدد باید 4 باشه.(به معنی 4 بایت) چون عدد خروجی در مبنای Hex بدست میاد.


Dim MyValue As Integer
retVal = RegQueryValueEx(handle, "NoControlPanel", 0, valueType, MyValue, 4)
MsgBox MyValue

daniyal_1363
دوشنبه 10 خرداد 1389, 09:32 صبح
خیلی خیلی ممنون از توضیحات کاملتون آقای xxxxx_xxxxx

کاملاً متوجه شدم

بعضی از توضیحات و جواب های شما رو که میبینم به داشتن اطلاعات زیاد شما قبطه میخورم:لبخندساده::بامزه:

بازم ممنون

30yamand
سه شنبه 11 خرداد 1389, 00:15 صبح
با تشکر ما هم استفاده کردیم از راهنمایی دوستمون