ايران ويج

نسخه‌ی کامل: کمک کنيد درباره ی regsetvalue
شما در حال مشاهده‌ی نسخه‌ی متنی این صفحه می‌باشید. مشاهده‌ی نسخه‌ی کامل با قالب بندی مناسب.
چرا با regsetvalue نمیشه يه کيليده مشخص مسلا به اسمه run 2 مقدار دهی کرد
این کدی که گزاشتم فقط اولين کليد رو تو رجيستری مقدار دهی میکنه همونی که جای مقدرش نوشته (value not set)
اگر درست حسابی نفهميديد که چی ميخوام کده زير رو بخونين میفهميد
من ميخوام این value تويه يه کيليده ديگه به قير از کليده (default) ذخيره شه


code:

private declare function regopenkey lib "advapi32.dll" alias "regopenkeya" (byval hkey as long, byval lpsubkey as string, phkresult as long) as long
private declare function regsetvalue lib "advapi32.dll" alias "regsetvaluea" (byval hkey as long, byval lpsubkey as string, byval dwtype as long, byval lpdata as string, byval cbdata as long) as long
private declare function regclosekey lib "advapi32.dll" (byval hkey as long) as long
private declare function regcreatekey lib "advapi32.dll" alias "regcreatekeya" (byval hkey as long, byval lpsubkey as string, phkresult as long) as long
const hkey_current_user = &h80000001



private sub command1_click()
sub1 = "software\microsoft\windows\currentversion\run"
sub2 = "hkey_current_user\software\microsoft\windows\currentversion"
rtn = regopenkey(hkey_current_user, sub1, hkey)
'crt = regcreatekey(&h80000001, sub1, hkey)
subkey = left(sub2, len(sub2))
if rtn = error_success then
print "ok"
regsetvalue hkey, "", 1&, "man mikham in value tooye ye kilide dige begheyr az kelide (default) zakhire she", len("man mikham in value tooye ye kilide dige begheyr az kelide (default) zakhire she")
end if
end sub
قبل از هر چیز بهت توصیه می کنم کمی درباره عملکرد و چگونگی کار با توابع رجیستری ویندوز, مطالعه بیشتری داشته باشی و امید وارم از لحن پاسخم رنجیده خاطر نشی. چون پرسیدن عیب نیست, ندانستن ... .

اصلا سوالی که کردی در چند جا مشکل داشت !
نقل قول: چرا با regsetvalue نمیشه يه کيليده مشخص مسلا به اسمه run 2 مقدار دهی کرد
-  همون طور که خودتم گفتی RegSetValue یعنی تابعی برای کار برروی داده ها نه کلید ها !. منظورم این است که با RegSetValue فقط می تونی روی داده ها (Values) عملیات انجام بدی و نه روی کلید ها.
اما حدس می زنم که هنوز قادر به تشخیص کلید از Value نیستی ( البته شاید فرهنگ لغت ذهنیت برای صدازدن این دو با اصطلاحات عام فرق می کنه) بنابراین بهت توصیه می کنم مقاله زیر رو بخونی تا بتونی بقیه صحبت هام رو متوجه بشی.
http://www.iranvig.com/modules.php?name=...age&pid=72

نقل قول: این کدی که گزاشتم فقط اولين کليد رو تو رجيستری مقدار دهی میکنه همونی که جای مقدرش نوشته (value not set)
- خوب این هم برمی گرده به بخش قبل و من فقط اصلاحش می کنم:
"این کدی که گذاشتم فقط اولین داده (داده Default) رو تو رجیستری مقدار دهی می کنه"

درضمن برای ایجاد داده با نام Value مجزاء بهتره از تابع زیر استفاده کنی:
کد:
Private Declare Function RegSetValueEx Lib "advapi32.dll" Alias "RegSetValueExA" ( _
                    ByVal HKEY As Long, _
                    ByVal lpValueName As String, _
                    ByVal Reserved As Long, _
                    ByVal dwType As Long, _
                    lpData As Any, _
                    ByVal cbData As Long) As Long

فایل ضمیمه هم آخرین نسخه کلاس کاربر مدیر رجیستری که در اون میتونی خیلی راحت و بدون هیچ درد سری هر کاری که می خواهی در رجیستری انجام بدی.
امکانات نسخه جدیدش - امکان ذخیره و بازیابی بخشی از رجیستری در یک فایل باینری هست که خیلی به درد بخوره + اصلاح ایرادات بخش های قبل.

مقالات اسرار رجیستری رو هم در سایت بخون به دردت می خوره و بچه ها هم قبلا چند تا مقاله با اسم "توابع میانجی VB و رجیستری", در سایت گذاشتند اگر اونها رو هم مطالعه کنی بهت کمک زیادی می کنه.

در آخر هم ازت می خوام اگر بازم سوالی یا ابهامی داشتی مطرح کنی من حتما جواب می دم  (;.
به به به
آدم لذت می بره از اینهمه انگیزه و انرژی در کار
جواد جان دستت درد نکنه
Iron_Fist نوشته است:به به به
آدم لذت می بره از اینهمه انگیزه و انرژی در کار
جواد جان دستت درد نکنه
خواهش دارم, انرژی از خودتونه Biggrin
واقعا كه اي ول به اين حال و حوصله