PDA

View Full Version : پیدا کردن محل نصب یک برنامه از روی Registery



A.Farzin
یک شنبه 15 بهمن 1385, 18:58 عصر
با سلام

می‌خواهم به کمک کلیدهای ذخیره شده در رجیستری، آدرس محل نصب فایل اجرایی یک نرم‌افزار را پیدا و بخوانم.
برای این منظور توابع API اشاره شده در عنوان ID: Q145679 از MSDN را هم به کار گرفتم و ولی موفق نشدم. یکی از توابعKey و SubKey می‌خواست به هر شکلی که دادم جواب نداد، در یک حالت جواب حاصل شد ولی جواب یک عدد بود در حالی که من به دنبال یک String بودم.
اگر کلید مورد نظر به شکل زیر باشد آیا دوستان لطف می‌کنند چگونگی کار را نشانم دهند.
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\11.0\ Excel\InstallRoot
ممنون

zerobit-ltd
دوشنبه 16 بهمن 1385, 13:00 عصر
می تونی از کد زیر استفاده کنی:


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_LOCAL_MACHINE = &H80000002
Private Sub Form_Load()
Dim RetVal As Long, hKey As Long, Length As Long
Dim Buffer As String
RetVal = RegOpenKey(HKEY_LOCAL_MACHINE, "SOFTWARE\Microsoft\Office\11.0\Excel\InstallRoot", 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

اون عددی هم که شما بدست آوردی، احتمالا retyrn value تابع بوده که مشخص می کرده تابع موفق به انجام کارش شده یا نه.