Function IsDotNet_Installed() As BOOL
'检测是否安装了.Net环境
Dim DotNet_Install_Location As String
Dim k As Long
Var r = RegOpenKeyEx(HKEY_LOCAL_MACHINE , $"Software\Microsoft\.NETFramework" , 0 , KEY_READ , @k)
If 0 <> r Then
Function = False
Exit Function
End If
Dim v As ZString * 256
Dim l As DWORD = 255
Dim t As DWORD
r = RegQueryValueEx(k ,$"InstallRoot" ,NULL ,@t ,@v ,@l)
If 0 <> r Or (t <> REG_SZ And t <> REG_EXPAND_SZ) Then
Function = False
Exit Function
End If
Var Buffer = Space(l)
If 0 <> RegQueryValueEx(k, $"InstallRoot", NULL, @t, @Buffer, @l) Then
IsDotNet_Installed = False
RegCloseKey k
Exit Function
End If
RegCloseKey k
IsDotNet_Installed = True
End Function
VFB确实很适合编写应用程序,因为可以无障碍调用Window的API,而且编译出来的程序体积超级小。
对于.Net的程序如果当前的Window版本是XP,默认没有安装.Net 2.0,如果是Win7或者Win2008则没有.Net 4.0。客户如果直接双击应用程序会弹出错误提示,程序无法运行。
如果VFB编写一个引导程序,启动之前先检测一下注册表,判断.Net对应的版本是否安装,则可以避免上述的错误。