0

vb6 を使用して Windows XP で最初に作成された私のアプリケーションは、プログラム固有の値をレジストリに保存します。これらの値の 1 つは、プログラムが使用するデータベースの場所です。ユーザーは好きな場所に置くことができ、プログラムはレジストリから最後に保存された値でデータベースの場所画面を準備します。このフォームは、DriveListBox、DirListBox、および FileListBox コンポーネントを使用します。このアプリケーションを Win 7 で実行すると、ネットワーク ドライブであるレジストリに保存されている値にディレクトリ リストを設定しようとするとエラーが発生します。データベースが保存されているドライブがローカルの場合、これはすべて正常に機能します。

コードは次のとおりです。

 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:\"

問題はディレクトリ リスト ボックスにあると思われます。エラー処理を削除すると、スローされるエラーは「Device Unavailabe」です

何が起こっているかについてのアイデアはありますか?使用しているコンポーネントは win 7 では有効ではありませんか? このアプリケーションの場合、プログラムを実行している複数の PC からアクセスできるように、データベースはネットワーク ドライブ上にある必要があります。すべての PC は Windows 7 で実行されています。

4

2 に答える 2

1

VB6 に付属するドライブ、ディレクトリ、およびファイル コントロールは、どうしようもなく古くなっています。それらは VB3 以降、大幅に変更されていません。それは 90 年代半ばにさかのぼります。これらは、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ビットマシン上のWindows7は、32ビットアプリのレジストリの場所をWOW3264のようなものに移動しました。

于 2012-05-17T01:02:30.127 に答える