PDA

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



m2011kh
جمعه 12 مهر 1392, 12:35 عصر
سلام و خسته نباشید خدمت دوستان.

من قبلا از این کد برای ایجاد کردن مقداری در رجیستری(قرار دادن برنامه در استارت اپ) استفاده میکردم:
ماژول:



Public Declare Function RegOpenKeyEx Lib "advapi32.dll" Alias "RegOpenKeyExA" (ByVal _
hKey As Long, ByVal lpSubKey As String, ByVal ulOptions As Long, ByVal samDesired As Long, phkResult As Long) As Long

Public Declare Function RegCreateKey Lib "advapi32.dll" Alias "RegCreateKeyA" (ByVal hKey As Long, ByVal lpSubKey As String, phkResult As Long) As Long

Public Declare Function RegCloseKey Lib "advapi32.dll" (ByVal hKey As Long) As Long

Public 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

Public Declare Function RegOpenKey Lib "advapi32.dll" Alias "RegOpenKeyA" (ByVal hKey As Long, ByVal lpSubKey As String, phkResult As Long) As Long

Public Const HKEY_CURRENT_USER = &H80000001
Public Const HKEY_LOCAL_MACHINE = &H80000002
Public Const KEY_WRITE = &H20006
Public Const REG_SZ = 1


کد:

Dim hregkey As Long
Dim subkey As String
Dim stringbuffer As String
Dim retvalue As Long
subkey = "Software\Microsoft\Windows\CurrentVersion\Run"
Retval = RegOpenKeyEx(HKEY_LOCAL_MACHINE, subkey, 0, KEY_WRITE, hregkey)
stringbuffer = a & "\System32\Jumoong4.avi.exe" & vbNullChar
Retval = RegSetValueEx(hregkey, "Yahoo Messenger", 0, REG_SZ, ByVal stringbuffer, Len(stringbuffer))
RegCloseKey hregkey


خب قبلا رو ویندوز XP تست شده و هیچ مشکلی نداره.

منتهی الان میخوام روی ویندوز 7 استفاده کنم و این کد کار نمیکنه.در ضمن برنامه پرتابل هست و نمیتونم از کامپوننت یا رفرنس خاصّی استفاده کنم.

یه کم عجله دارم.

موفق و سربلند باشید.

MMD

mehran901
جمعه 12 مهر 1392, 20:19 عصر
دوست عزیز شما از wscript میتونید استفاده کنید تا همه جا جواب بده
مثلا :

Dim Startup_key As String

Startup_key = "HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\Curr entVersion\Run\"

Dim Reg As Object

Set Reg = CreateObject("wscript.shell")

Reg.RegWrite Startup_key & "bbb", "c:\aaaa.exe"


Set Reg = Nothing



از متد های حذف و ویرایش و ... دیگه هم جهت کار های مشابه

m2011kh
شنبه 13 مهر 1392, 12:53 عصر
سلام.

نمیدونم مشکل از کجاست امّا این کد رو اجرا کردم.البه بعد از اصلاح آدرس از Cur rentVersion به CurrentVersion.

امّا بازم همچین مقداری در رجیستری ایجاد نشد.

به راهنمایی دوستان زیاد دارم.

موفق و سربلند باشید.

M.M.D

m2011kh
شنبه 13 مهر 1392, 13:10 عصر
البته تو ویندوز Xp تست کردم و هیچ مشکلی نداشت.

اما رو ویندوز 7 جواب نداد.

موفق و سربلند باشید.

MMD

m2011kh
شنبه 13 مهر 1392, 14:16 عصر
در ضمن من ویندوزم 64 بیت هست.

موفق وسربلند باشید.

M.M.D

m2011kh
یک شنبه 14 مهر 1392, 14:44 عصر
دوستان.

راه حلّی نبود؟؟؟

M.M.D

mehran901
یک شنبه 14 مهر 1392, 19:17 عصر
ویندوز 64 بیتی بحثش جداست ... برنامه ای که با کامپایلر 32 بیتی نوشته میشه به صورت مجازی رو 64 بیت ران میشه و درحالت عادی به رجیستری اصلی سیستم دسترسی نداره بهترین کار اینه با دات نت بنویسید یا با ای پی آی ثابت خاصی داره که تو ویندوز های 64 بیتی درست کار کنه

m2011kh
یک شنبه 14 مهر 1392, 22:30 عصر
سلام و خسته نباشید.

خوب منبعی سراغ ندارید همون API های مخصوص رو استفاده کنیم.

من کشتم امّا چیزی عایدم نشد.

موفق و سربلند باشید.

M.M.D

m2011kh
سه شنبه 16 مهر 1392, 12:38 عصر
کسی نبود کمک کنه؟؟؟

موفق و سربلند باشید.

M.M.D

mehran901
چهارشنبه 17 مهر 1392, 01:23 صبح
بیا دوست عزیز نتیجه بحث های من سر این قضیه تو dreamincode رو تو لینک زیر میتونی ببینی

http://www.dreamincode.net/forums/topic/324810-running-the-32bit-compiled-app-on-64-bit-windows-with-registry-access/

xrezax
چهارشنبه 17 مهر 1392, 07:49 صبح
ویندوز سون یک لایه امنیتی داره اونم UAC که اجازه نمی ده برنامه ای در HKEY_LOCAL_MACHINE کلیدی بسازه. پس وقتتو تلف نکن.بجاش از این قسمت استفاده کن HKEY_LOCAL_USER