我的应用程序最初是在使用vb6的win XP中创建的,它将程序特定的值存储在注册表中。其中一个值是程序使用的数据库所在的位置。用户可以将它放在任何他们喜欢的地方,并且程序启动它使用从注册表中最后保存的值填充数据库位置屏幕。此表单使用DriveListBox,DirListBox和FileListBox组件。在Win 7上运行此应用程序时,我尝试将目录列表设置为存储在注册表(网络驱动器)中的值时出错。如果存储db的驱动器是本地的,那么这一切都可以正常工作。
代码是:
On Error GoTo HandleError
dbLocation = GetSetting(App.Title, "Settings", "DBLocation", dbserver)
If dbLocation = dbserver Then
Dir1.Path = GetSetting(App.Title, "Database", "ServerDBPath", "C:\") <----- fails
Else
Dir1.Path = GetSetting(App.Title, "Database", "LocalDBPath", "C:\")
End If
Drive1.Drive = Dir1.Path
Exit Sub
HandleError:
MsgBox "Error connecting to the network. Check network connections and try again.", vbOKOnly, "Connection error"
Drive1.Drive = "C:\"
我怀疑问题在于目录列表框。如果我删除我的错误处理,抛出的错误是“设备不可用”
关于发生了什么的任何想法?我使用的组件对win 7无效吗?对于此应用程序,数据库必须位于网络驱动器上,因此可以从运行该程序的多台PC访问。所有的PC都在Windows 7上运行。
答案 0 :(得分:1)
VB6附带的驱动器,目录和文件控件无可救药地过时了。自VB3以来,它们没有发生重大变化 - 那是在九十年代中期。这些设计用于Windows 3.1!最好使用Common Dialogues库附带的Open File和Save File对话框。
答案 1 :(得分:0)
至于Windows 7中提供的vb6的dll,请参阅http://msdn.microsoft.com/en-us/vstudio/ms788708.aspx
GetSetting是对注册表的VB6调用。 64位计算机上的Windows 7将32位应用程序的注册表位置移动到类似WOW3264的位置。