2012-02-15 9 views
1

ほとんどのWindows 7マシンで(UACをオンにしていても)正常に動作するVB6アプリケーションがありますが、起動時に「管理者として実行」に設定すると、データベースにクエリを実行しようとすると、「1つまたは複数の必須パラメータに値が指定されていません。」というエラーメッセージが返されます。一部のWindows 7マシンで1つ以上の必須パラメータにエラーがありません

エラーメッセージは、通常、テーブル名やパラメータのスペルが間違っていることを意味します。同じ手順/クエリ呼び出しを行っている同じアプリケーションがWin XPと一部のWin 7マシンに問題がないため、ここには該当しません。

データベースはMS Access 2003形式です。データベースは、アプリケーションのexeとdllと共にProgram Filesディレクトリにあります。

これが一貫したエラーだった場合は、簡単にデバッグして移動できますが、すべてのテストマシンでこのエラーは発生しないため、私は迷っています。

これがなぜ発生するのか、どのように修正するのかに関するアイデアはありますか?この場所は保護され、UACを有効にしたシステムでは、標準ユーザー、および管理者は、それに書き込むことはできませんので、プログラムファイルにデータベースファイルを保存する

おかげで、 クリス

+0

あなたはUACについて言及しました。だから、これは間違いなく[プログラムファイルの仮想化](http://support.microsoft.com/kb/927387)ディレクトリが原因ではないことを確認したと思いますか? – MarkJ

+0

MarkJあなたのリンクを読んでみましたが、それに続く問題がありました。 UACについては、アプリケーションのプロパティを「管理者として実行」に設定すると、UACが開くときにユーザーにプロンプ​​トが表示されるため、問題は解決しないと言いました。 –

+0

HansUp開発環境やテストマシンでこの問題が発生していないため、この時点でクエリをトラップすることはできません。私はこの問題を抱えているマシンに手を差し伸べています。これはSQL文の問題であるとは思えません。これは、同じ設定を使って他の多くのコンピュータでうまく動作するからです。 –

答えて

3

良いアイデアではありません。データベースをすべてのユーザー間で共有する必要がある場合は、ユーザーのプロファイルにAppData、またはユーザーのプロファイルにはProgramDataのいずれかのデータベースを格納する必要があります。

標準ユーザーはProgram Filesに書き込むことができないため、Vista/7には仮想化の仕組みがあります。 Program Filesへの書き込みアクセスのないプログラムがそこに書き込もうとすると、ファイルシステムは要求をユーザーのプロファイルにリダイレクトします。仮想化されたProgram FilesディレクトリはC:\Users\<account>\AppData\Local\VirtualStoreにあります。私はあなたが仮想化のためにこのエラーを見ると思います:データベースは実際のProgram Filesと仮想化されたファイルの両方の場所に存在し、ファイルは異なる可能性があります。仮想化されたバージョンでは必要なレコードを取得できなかったため、エラーメッセージが表示されます。

管理者としてアプリケーションを起動すると、仮想化は無効になり、Program Filesにあるファイルにアクセスします。

データベースファイルがVirtualStoreに存在するかどうかを確認し、Program Filesに保存されているファイルとの相違点を見つけようとします。

+0

それは問題のようです。私は 'ProgramData'特別なフォルダを利用しようとしましたが、それはディレクトリ自体よりもコードのクリーンアップに関連すると思われる他の問題を引き起こすように思われました。 –

関連する問題