Ovo bi trebalo da nadje 2.0 net framework ... dodao sam 10-ak linija
Mislim da je ipak bolje da se trazilo u
Code:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP
zato sto je tu izlistano vise verzija (bar kod mene)
Code:
Private Const HKEY_LOCAL_MACHINE = &H80000002
Private Const READ_CONTROL = &H20000
Private Const STANDARD_RIGHTS_READ = (READ_CONTROL)
Private Const KEY_QUERY_VALUE = &H1
Private Const KEY_ENUMERATE_SUB_KEYS = &H8
Private Const KEY_NOTIFY = &H10
Private Const SYNCHRONIZE = &H100000
Private Const REG_SZ = 1
Private Const KEY_READ = ((STANDARD_RIGHTS_READ Or KEY_QUERY_VALUE Or KEY_ENUMERATE_SUB_KEYS Or KEY_NOTIFY) And (Not SYNCHRONIZE))
Private 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
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 Type FILETIME
dwLowDateTime As Long
dwHighDateTime As Long
End Type
Private Const ERROR_NO_MORE_ITEMS = 259&
Private Declare Function RegEnumKeyEx Lib "advapi32.dll" Alias "RegEnumKeyExA" (ByVal hKey As Long, ByVal dwIndex As Long, ByVal lpName As String, lpcbName As Long, ByVal lpReserved As Long, ByVal lpClass As String, lpcbClass As Long, lpftLastWriteTime As FILETIME) As Long
Private Function IsNet2Installed() As Boolean
Dim hKey As Long
If 0 <> RegOpenKeyEx(HKEY_LOCAL_MACHINE, "Software\Microsoft\.NETFramework", 0, KEY_READ, hKey) Then IsNet2Installed = False: Exit Function
Dim lngSize As Long: lngSize = 260
Dim Buffer As String: Buffer = String(lngSize, vbNullChar)
If 0 <> RegQueryValueEx(hKey, "InstallRoot", 0, REG_SZ, ByVal Buffer, lngSize) Then IsNet2Installed = False: RegCloseKey hKey: Exit Function
Debug.Print Left(Buffer, lngSize)
Dim n As Long, ft As FILETIME: n = 0
lngSize = 260
Dim Buffer2 As String: Buffer2 = String(lngSize, vbNullChar)
If 0 <> RegEnumKeyEx(hKey, n, ByVal Buffer, lngSize, 0, ByVal Buffer2, 260, ft) Then IsNet2Installed = False: RegCloseKey hKey: Exit Function
Debug.Print Left(Buffer, lngSize)
Dim ret As Long
While ret <> ERROR_NO_MORE_ITEMS
lngSize = 260
ret = RegEnumKeyEx(hKey, n, ByVal Buffer, lngSize, 0, ByVal Buffer2, 260, ft)
n = n + 1
Debug.Print Left(Buffer, lngSize)
If Left(Buffer, 4) = "v2.0" Then IsNet2Installed = True: RegCloseKey hKey: Exit Function
Wend
RegCloseKey hKey
IsNet2Installed = False
End Function
Private Sub Form_Load()
If IsNet2Installed Then MsgBox "Ima instaliran NET framework 2.0" Else MsgBox "Nema instaliran NET framework 2.0"
End Sub
[Ovu poruku je menjao Eurora3D Team dana 16.09.2008. u 17:42 GMT+1]