Windows 7 用户定义的数据库位置

Windows 7 用户定义的数据库位置,windows-7,vb6,Windows 7,Vb6,我的应用程序最初是使用vb6在win XP中创建的,它将特定于程序的值存储在注册表中。其中一个值是程序使用的数据库所在的位置。用户可以把它放在任何他们喜欢的地方,然后程序启动它,并用上次从注册表保存的值在db location屏幕上初始化。此表单使用DriveListBox、DirListBox和FileListBox组件。在Win7上运行此应用程序时,尝试将目录列表设置为存储在注册表(网络驱动器)中的值时出错。如果存储数据库的驱动器是本地的,这一切都可以正常工作 代码是: On Error

我的应用程序最初是使用vb6在win XP中创建的,它将特定于程序的值存储在注册表中。其中一个值是程序使用的数据库所在的位置。用户可以把它放在任何他们喜欢的地方,然后程序启动它,并用上次从注册表保存的值在db location屏幕上初始化。此表单使用DriveListBox、DirListBox和FileListBox组件。在Win7上运行此应用程序时,尝试将目录列表设置为存储在注册表(网络驱动器)中的值时出错。如果存储数据库的驱动器是本地的,这一切都可以正常工作

代码是:

 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:\"
错误转到HandleError
dbLocation=GetSetting(App.Title,“设置”,“dbLocation”,dbserver)
如果dbLocation=dbserver,则

Dir1.Path=GetSetting(App.Title,“Database”、“ServerDBPath”、“C:\”)至于Windows7中提供的vb6 DLL,请参见


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

VB6附带的驱动器、目录和文件控件已完全过时。自VB3以来,它们并没有发生显著的变化——这要追溯到90年代中期。这些是为Windows 3.1设计的!您最好使用公共对话库附带的“打开文件”和“保存文件”对话框。

getsetting似乎有效,将注册表的值放入目录列表框时会出现异常,但仅当涉及网络驱动器时才会出现。我现在正在win 7-32位版本上运行此应用程序,更不用说它不会最终运行到64位版本。我必须研究WOW326是什么,我想我还没有听说它的声音像驱动器号一样简单,没有在程序运行的用户上下文中映射。现代Windows版本有“分割令牌”会话,人们通常映射管理上下文,而不是标准上下文,反之亦然。您试图设置的实际返回路径值是多少?