我发现,2000中 access加密的数据库,在2003的 access 数据库中暴露无遗!
简直是太致命了!有没有办法判断系统采用的是office是2000 还是 2003!各位帮帮忙!!!
简直是太致命了!有没有办法判断系统采用的是office是2000 还是 2003!各位帮帮忙!!!
解决方案 »
- 为何VB不能使用setAttribute修改网页元素事件?
- 总提示下标过界,百度了没找到对应的
- vb 6.0 + sql combo 与 text 问题
- bytesTotal和数组差一个
- 向各位请教一个问题,是关于和ORACLE数据库的连接判断问题?在线等待.......
- 我以前是用pb,现在用vb,大家可以推荐几本好书么,
- 子窗口居中不起作用
- 如何将Ado获取的数据显示在DataGrid控件上?急!!!
- 怎样向数据库中添加有特殊字符的字段如 '"&*() 等等 ~~在线等待~~
- 有关c/s程序的一个问题。
- 很莫名的,我的专家分到了909分,马上可以成为4个三角
- 刚才想问的问题是:在800*600分辨率下制作的VB界面,能样修改才能在1024*768分辨率下显示相同的画面??谢谢!
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
Declare Function RegCloseKey Lib "advapi32.dll" (ByVal hKey As Long) As Long
Public Function GetExcelPath() As String
Dim s As String * 255, sVBEntry As String
Dim lVBKey As Long, lType As Long, lLen As Long, lRC As Long
Dim sPath As String
Const HKEY_LOCAL_MACHINE = &H80000002
Const KEY_QUERY_VALUE = &H1&
Const KEY_ENUMERATE_SUB_KEYS = &H8&
Const KEY_NOTIFY = &H10&
Const READ_CONTROL = &H20000
Const STANDARD_RIGHTS_READ = READ_CONTROL
Const KEY_READ = STANDARD_RIGHTS_READ Or KEY_QUERY_VALUE Or KEY_ENUMERATE_SUB_KEYS Or KEY_NOTIFY ' Search for Office 2000 path
sVBEntry = "SOFTWARE\Microsoft\Office\9.0\Excel\InstallRoot"
sPath = ""
lLen = Len(s)
lRC = RegOpenKeyEx(HKEY_LOCAL_MACHINE, sVBEntry, 0, KEY_READ, lVBKey)
If lRC = 0 Then
' RegOpenKeyEx succeeded
lRC = RegQueryValueEx(lVBKey, "Path", 0, lType, s, lLen)
If lRC = 0 Then sPath = Left$(s, lLen - 1) 'RegQueryValueEx succeded
RegCloseKey lVBKey
End If If sPath <> "" Then
GetExcelPath = sPath
Exit Function
End If ' Office 2000 key not found, search for Office XP path sVBEntry = "SOFTWARE\Microsoft\Office\10.0\Excel\InstallRoot" lLen = Len(s)
lRC = RegOpenKeyEx(HKEY_LOCAL_MACHINE, sVBEntry, 0, KEY_READ, lVBKey)
If lRC = 0 Then
lRC = RegQueryValueEx(lVBKey, "Path", 0, lType, s, lLen)
If lRC = 0 Then
sPath = Left$(s, lLen - 1) ' Office XP key found
Else
MsgBox "對不起,沒有找到開啟 Microsoft Excel 的應用程式,請完整安裝 Microsoft Office 2000以上版本.", vbCritical
sPath = ""
End If
RegCloseKey lVBKey
End If
GetExcelPath = sPath
End Function
Private Declare Function RegOpenKeyEx Lib "advapi32.dll" Alias "RegOpenKeyExA" (ByVal hKey As Long, ByVal lpSubKey As String, ByVal Reserved As Long, ByVal samDesired As Long, phkResult As Long) As Long
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 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 Any) As Long
Private Declare Function RegEnumValue Lib "advapi32.dll" Alias "RegEnumValueA" (ByVal hKey As Long, ByVal dwIndex As Long, ByVal lpValueName As String, lpcbValueName As Long, ByVal lpReserved As Long, lpType As Long, lpData As Any, lpcbData As Long) As Long
Const HKEY_CLASSES_ROOT = &H80000000
Const HKEY_CURRENT_USER = &H80000001
Const HKEY_LOCAL_MACHINE = &H80000002
Const HKEY_USERS = &H80000003
Const HKEY_CURRENT_CONFIG = &H80000005
Const HKEY_DYN_DATA = &H80000006Const ERROR_NO_MORE_ITEMS = 259&
Const STANDARD_RIGHTS_ALL = &H1F0000
Const SYNCHRONIZE = &H100000
Const KEY_CREATE_LINK = &H20
Const KEY_CREATE_SUB_KEY = &H4
Const KEY_ENUMERATE_SUB_KEYS = &H8
Const KEY_NOTIFY = &H10
Const KEY_QUERY_VALUE = &H1
Const KEY_SET_VALUE = &H2
Const KEY_ALL_ACCESS = ((STANDARD_RIGHTS_ALL Or KEY_QUERY_VALUE Or KEY_SET_VALUE Or KEY_CREATE_SUB_KEY Or KEY_ENUMERATE_SUB_KEYS Or KEY_NOTIFY Or KEY_CREATE_LINK) And (Not SYNCHRONIZE))Private Sub Form_Load()
Dim rlt As Long
Dim smsg As String
If RegOpenKeyEx(HKEY_LOCAL_MACHINE, "Software\Microsoft\Office\9.0\Word", 0, KEY_ALL_ACCESS, rlt) = 0 Then
smsg = "本机已经安装MS Word 2000程序。"
ElseIf RegOpenKeyEx(HKEY_LOCAL_MACHINE, "Software\Microsoft\Office\10.0\Word", 0, KEY_ALL_ACCESS, rlt) = 0 Then
smsg = "本机已经安装MS Word XP程序。"
Else
smsg = "没有可用MS Word程序。"
End If
Print smsg
If RegOpenKeyEx(HKEY_LOCAL_MACHINE, "Software\Microsoft\Office\9.0\Excel", 0, KEY_ALL_ACCESS, rlt) = 0 Then
smsg = "本机已经安装MS Excel 2000程序。"
ElseIf RegOpenKeyEx(HKEY_LOCAL_MACHINE, "Software\Microsoft\Office\10.0\Excel", 0, KEY_ALL_ACCESS, rlt) = 0 Then
smsg = "本机已经安装MS Excel XP程序。"
Else
smsg = "没有可用MS Excel。"
End If
Print smsg
RegCloseKey rlt
End Sub
能不能判断
access 的版本 大于2000 的存不存在(当是 2003,或者 下一版本 2005 也出来了 ,而不是10.0)
或者
缺省打开mdb文件的程序 是 access 2000