ورود

View Full Version : سوال: اشکال در گرفتن مسیر نصبب برنامه winrar از طریق رجیستری



m75an86
چهارشنبه 14 دی 1390, 10:09 صبح
با سلام و تشکر از دوستان برنامه نویس که همیشه راهنماییهاشون برام کارساز بوده
من داخل برنامه ام میخوام مسیر نصب winrar رو بدونم تا از طریق shell یه سری فایلها رو rar کنم و مسیر آنرا تو رجیستری پیدا کردم و از طریق سرچ تو همین سایت متوجه شدم که باید این کدها رو برای بدست آوردن مسیر بکارببرم ولی در زمان اجرا error میده و کلا vb رو میبنده. کدهایی که استفاده میکنم اینها هستد:




]
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 RegCloseKey Lib "advapi32.dll" (ByVal hKey As Long) As Long
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
Private Const HKEY_CLASSES_ROOT = &H80000000
private sub fidpath()
Dim RetVal As Long, hKey As Long, Length As Long
Dim Buffer, retvals As String
RetVal = RegOpenKey(HKEY_CLASSES_ROOT, "Applications\WinRAR.exe\shell\open\command", hKey)
If RetVal = 0 Then 'Key Is Open
Buffer = Space(255)
Length = 255
RegQueryValueEx hKey, "Path", 0, REG_SZ, ByVal Buffer, Length
MsgBox Buffer
End If
RegCloseKey (hKey)
End sub
[/LTR_INLINE]

m75an86
چهارشنبه 14 دی 1390, 11:14 صبح
من اشکال کارم رو متوجه شدم چون تو HKEY_CLASSES_ROOT\Applications\WinRAR.exe\shell\op en\command اصلا string value به نام path وجود نداره بلکه تو (Default) مسیر برنامه رو میذاره حالا هر کاری میکنم محتوای Default رو نمیتونم بردارم یعنی بجای Path از "(Default)" به شکلهای مختلف استفاده میکنم بازم جواب نمیده و Buffer رو خالی نشون میده. خواهش میکنم کسی اگه راه حلی داره (یعنی بدون ایجاد path در مسیر کلید) منو راهنمایی کنه. ممنونم

m75an86
چهارشنبه 14 دی 1390, 12:29 عصر
من اشکال کارم رو متوجه شدم چون تو HKEY_CLASSES_ROOT\Applications\WinRAR.exe\shell\op en\command اصلا string value به نام path وجود نداره بلکه تو (Default) مسیر برنامه رو میذاره حالا هر کاری میکنم محتوای Default رو نمیتونم بردارم یعنی بجای Path از "(Default)" به شکلهای مختلف استفاده میکنم بازم جواب نمیده و Buffer رو خالی نشون میده. خواهش میکنم کسی اگه راه حلی داره (یعنی بدون ایجاد path در مسیر کلید) منو راهنمایی کنه. ممنونم

حالا دیگه متوجه شدم گیرم کجا هست. برای این حالتها که مسیر برنامه تو Default هست در واقع Value Name آن خالی هست و باید از "" تو RegQueryValueEx استفاده کنیم.
از همه دوستانی که تاپیکهایی در رابطه با کار با رجیستری در این سایت گذاشتند ممنونم در واقع با مطالعه اونا من خیلی مطالب دستگیرم شد. امیدوارم این تاپیک هم بدرد کسی بخوره