PDA

View Full Version : موجود بودن کلاس clsregistry در vb6



mr-adler
پنج شنبه 07 مهر 1390, 01:30 صبح
با سلام خدمت دوستان عزیز
شبتون خوش و مهتابی:قلب:
میخواستم بدونم کلاس ذکر شده مربوط به وی بی 6 است یا دات نت؟
یه جایی خوندم برای کار با ریجیستری ویندوز باید با کتابخانه advapi32 کار کرد . گفتم شاید این کلاس در این کتابخانه باشد . اما وقتی در object browser این کتابخانه رو جستجو کردم دیدم اصلا خود این کتابخانه هم موجود نیست:متعجب:
حالا تکلیف چیه؟وی بی 6 این مورد رو نداره؟:ناراحت:
خیلی لازمش دارم:افسرده:
ممنون
اگه ممکنه پاسخ بدید...

محسن واژدی
پنج شنبه 07 مهر 1390, 08:13 صبح
میخواستم بدونم کلاس ذکر شده مربوط به وی بی 6 است یا دات نت؟

سلام عیلکم
بدون مشاهده دستورات، نمیتوان گفت مربوط به کدام نسخه وی بی است



یه جایی خوندم برای کار با ریجیستری ویندوز باید با کتابخانه advapi32 کار کرد . گفتم شاید این کلاس در این کتابخانه باشد . اما وقتی در object browser این کتابخانه رو جستجو کردم دیدم اصلا خود این کتابخانه هم موجود نیست:متعجب:
حالا تکلیف چیه؟وی بی 6 این مورد رو نداره؟:ناراحت:

بله، توابع کنترل ریجستری در کتابخانه advapi32قرار دارند، عموما" برای دسترسی به ریجستری از توابع این کتابخانه استفاده میشود
توابع کنترل ریجستری به صورت پیش فرض در وی بی وجود ندارند مگر آنکه خودتان آن ها را بنویسید یا از کلاس های مربوطه استفاده کنید. کلاس clsRegistry را هم میتوانید در انجمن و هم در اینترنت پیدا کنید
راه ساده تر برای دسترسی و کنترل ریجستری استفاده از کتابخانه wshom.ocx است، برای بارگذاری این کتابخانه:
1- با کلیک راست در object-browser فرم reference را باز کنید و کتابخانه "Windows Script Host Object Model" را روشن کنید، یا از system32 فایل wshom.ocx را انتخاب کنید
2- دستور زیر را در ماژول کد یا فرم کپی کنید:

Private reg As New WshShell


در کلاس WshShell سه تابع ریجستری به نام های RegRead, RegWrite, RegDelete برای کنترل ریجستری وجود دارد:RegRead: برای خواندن ریجستری، فرمت دستوری این تابع:


reg.RegRead "ROOT_KEY\SUB_KEY\[DATA]"

ROOT_KEY: کلید اصلی، مثلا" HKEY_CURRENT_USER
SUB_KEY: کلید فرعی، به عنوان مثال: \Software\Microsoft
DATA: که یک مقدار اختیاری است برای خواندن داده موجود در کلید مشخص شده (و اگر تعیین نشود داده Default کلید خوانده میشود)
RegWrite: برای نوشتن در ریجستری، و فرمت دستوری آن:


reg.RegWrite "ROOT_KEY\SUB_KEY\[DATA]", "VALUE"

VALUE: مقدار مورد نظر برای نوشتن در ریجستری

RegDelete: برای حذف یک داده یا کلید از ریجستری، فرمت این تابع:


reg.RegDelete"ROOT_KEY\SUB_KEY\[DATA]"


نکته ای که در اینجا وجود دارد این است که همیشه پس از مسیر کلید فرعی backslash (\) قرار بدهید در غیراینصورت برنامه کلید آخر را به عنوان داده DATA تلقی میکند

نمونه ها این توابع:

RegRead-

Private Sub Command1_Click()
reg.RegRead "HKEY_CURRENT_USER\Key\Data"
End Sub


RegWrite-

Private Sub Command1_Click()
reg.RegWrite "HKEY_CURRENT_USER\Key\Data", "Value"
End Sub


RegDelete-

Private Sub Command1_Click()
reg.RegDelete "HKEY_CURRENT_USER\Key\Data"
End Sub


بجای نوشتن دستی آدرس، میتوانید آدرس مورد نظر را از ریجستری کپی و در تابع paste کنید

موفق باشید

mr-adler
پنج شنبه 07 مهر 1390, 08:52 صبح
تشکر و قدر دانی ویژه از شما اقای واژدی عزیز
فقط یه سوال کوچیک هم داشتم:
ایا این کدی نوشتید معادل 2خط کد زیرین است:(private reg as new wshshell)
dim a as wshshell
set a=new wshshell

محسن واژدی
پنج شنبه 07 مهر 1390, 08:58 صبح
بله یکسان هستند، در واقعPrivate reg As New WshShell مستقیما" شی را در حافظه ایجاد میکند، اما توسط مورد دوم، میتوانیم شی را فقط در مواقع نیاز ایجاد و پس از اتمام از حافظه حذف کنیم

موفق باشید

a_mohammadi_m
چهارشنبه 13 مهر 1390, 10:32 صبح
سلام
ماژولي كه ضميمه كردم شامل دستورات قابل استفاده در VB6 براي استفاده از رجيستري ويندوز XP مي باشد
توجه كنيد كه دستورات در واقع از همان AdvApi32.Dll استفاده مي كنند

R2du-soft
چهارشنبه 28 تیر 1391, 20:11 عصر
سلام
برای خواندن یک فایل ریجستری در ویندوز 64 بیتی از چه کدی میتوان استفاده کرد؟
دستور reg.RegRead در ویندوز 64 بیتی کاربرد نداره!!!
کدی میخوام که هم بشه ازش توی ویندوز 32 بیتی و هم 64 بیتی برای خواندن یک key در ریجستری و نشان دادن آن مقدار در تکست باکس استفاده کرد.
مرسی

R2du-soft
پنج شنبه 29 تیر 1391, 22:03 عصر
یعنی کسی نیست جواب بده؟
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!
لطفا!