ورود

View Full Version : مشکل من با رجیستری



Mr.BabYsf
دوشنبه 22 بهمن 1386, 16:23 عصر
من مشکلی با دستور های رجیستری در ویژوال بیسیک دارم.
همانطور که میدانید برای ساخت یک Value در ساختمان رجیستری توسط ویژوال بیسیک باید از دستوری شبیه به دستور زیر استفاده کرد:



Dim keyhand As Long
Dim r As Long
r = RegCreateKey(HKEY_CURRENT_USER, "Software\Microsoft\Windows\CurrentVersion\Explorer \Advanced", keyhand)
r = RegSetValueEx(keyhand, "EnableBalloonTips", 0, REG_DWORD, 1, 4)
r = RegCloseKey(keyhand)

همچنین میدانید که اگر با استفاده از رجیستری ادیتور خود ویندوز (Run>RegEdit) کلیدی بسازیم،درون آن کلید به طور خود کار یک Value به اسم (Default) ساخته میشود:

http://uamco.parsehgig.com/MyFiles/VB/Registry Problem/Registry-Problem1.jpg

حال اگر بخواهیم با کمک دستور ذکر شده در ویژوال بیسیک تغییری در این Value ایجاد کنیم، ارزش (Default) هیچ تغییری نمیکند بلکه یک Value دیگر دقیقآ با همان اسم ساخته میشود:
کد مذکور:



Dim keyhand As Long
Dim r As Long
r = RegCreateKey(HKEY_CURRENT_USER, "Console\New Key #1", keyhand)
r = RegSetValueEx(keyhand, "(Default)", 0, REG_SZ, ByVal "Mr.BabYsf", Len("Mr.BabYsf"))
r = RegCloseKey(keyhand)

نتیجه:

http://uamco.parsehgig.com/MyFiles/VB/Registry Problem/Registry-Problem2.jpg
حال با توجه به این توضیح، فکر میکنید راهی هست که بتوان ارزش (Default) اصلی را تغییر داد، بدون اینکه یک ارزش جدید ناخواسته ایجاد شود؟

Mbt925
دوشنبه 22 بهمن 1386, 16:30 عصر
"(Default)" --> ""





Private Const KEY_ALL_ACCESS = 983103
Private Const REG_SZ = 1

'------------------

Dim RHKey As Long
Dim strData As String

Call RegOpenKeyEx(HKEY_LOCAL_MACHINE, "Key Path", 0, KEY_ALL_ACCESS, RHKey)

strData = "Mbt925"

'If Return Value = 0 : Success
Call RegSetValueEx(RHKey, "", 0, REG_SZ, strData, Len(strData))

Call RegCloseKey(RHKey)

End Sub

Mr.BabYsf
دوشنبه 22 بهمن 1386, 16:39 عصر
Private Const KEY_ALL_ACCESS = 983103

مشه درباره ی این Const توضیح بدید؟ نا آشناست :متفکر:

Mbt925
دوشنبه 22 بهمن 1386, 16:43 عصر
برای باز کردن یه Key باید نوع دسترسی مشخص بشه:





Private Const KEY_CREATE_LINK = 32 ' Permission to create a symbolic link.
Private Const KEY_CREATE_SUB_KEY = 4 ' Permission to create subkeys.
Private Const KEY_ENUMERATE_SUB_KEYS = 8 ' Permission to enumerate subkeys.
Private Const KEY_EXECUTE = 131097 ' Permission for read access.
Private Const KEY_NOTIFY = 16 ' Permission for change notification.
Private Const KEY_QUERY_VALUE = 1 ' Permission to query subkey data.
Private Const KEY_SET_VALUE = 2 ' Permission to set subkey data.
Private Const KEY_ALL_ACCESS = 983103 ' Combines the KEY_QUERY_VALUE, KEY_ENUMERATE_SUB_KEYS, KEY_NOTIFY, KEY_CREATE_SUB_KEY, KEY_CREATE_LINK, and KEY_SET_VALUE access rights, plus all the standard access rights except SYNCHRONIZE.
Private Const KEY_READ = 131097 ' Combines the STANDARD_RIGHTS_READ, KEY_QUERY_VALUE, KEY_ENUMERATE_SUB_KEYS, and KEY_NOTIFY access rights.
Private Const KEY_WRITE = 131078 ' Combines the STANDARD_RIGHTS_WRITE, KEY_SET_VALUE, and KEY_CREATE_SUB_KEY access rights.