0

我的应用程序最初是在 win XP 中使用 vb6 创建的,将程序特定的值存储在注册表中。这些值之一是程序使用的数据库所在的位置。用户可以将它放在他们喜欢的任何地方,程序启动它使用上次从注册表中保存的值启动数据库位置屏幕。此表单使用 DriveListBox、DirListBox 和 FileListBox 组件。在 Win 7 上运行此应用程序时,尝试将 dir 列表设置为存储在注册表中的值时出现错误,该注册表是网络驱动器。如果存储数据库的驱动器是本地的,这一切都可以正常工作。

代码是:

 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 上运行。

4

2 回答 2

1

VB6 附带的驱动器、目录和文件控件已经过时了。自 VB3 以来,它们并没有显着变化——那是在九十年代中期。这些是为与 Windows 3.1 一起使用而设计的!最好使用 Common Dialogues 库附带的 Open File 和 Save File 对话框。

于 2012-05-17T10:35:44.367 回答
0

至于 windows 7 中提供的 vb6 的 dll,请参阅http://msdn.microsoft.com/en-us/vstudio/ms788708.aspx

GetSetting 是对注册表的 VB6 调用。64 位计算机上的 Windows 7 将 32 位应用程序的注册表位置移动到类似 WOW3264 的位置。

于 2012-05-17T01:02:30.127 回答