【问题标题】:User defined database location用户定义的数据库位置
【发布时间】:2012-05-17 00:30:04
【问题描述】:

我的应用程序最初是在 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 上运行。

【问题讨论】:

  • 听起来就像驱动器号没有映射到程序正在运行的用户上下文中一样简单。现代 Windows 版本具有“拆分令牌”会话,人们经常映射管理上下文而不是标准上下文,反之亦然。
  • 您尝试设置的实际返回路径值是多少?

标签: windows-7 vb6


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    windows 7提供的vb6的dll见http://msdn.microsoft.com/en-us/vstudio/ms788708.aspx

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

    【讨论】:

    • getsetting 似乎有效,将注册表中的值放入 dir 列表框时发生异常,但仅在涉及网络驱动器时发生。我现在在 Win 7-32 位版本上运行这个应用程序,并不是说它最终不会在 64 位版本上运行。
    • 我得研究一下WOW3264是什么,我觉得我没听说过
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-08
    • 1970-01-01
    • 1970-01-01
    • 2016-03-09
    • 1970-01-01
    • 2012-03-23
    相关资源
    最近更新 更多