1

Win7 にインストールしようとしている WinXP アプリケーション (WinXP で完全に動作) があります。インストールはうまくいきましたが、アプリケーションをダブルクリックしてロードすると、次のようなメッセージが表示されます。

Access to the database file is not allowed [file path goes here].

現時点では、接続を次のように設定しています。

SqlCeConnection("Data Source=|DataDirectory|/db.sdf")

私も試しました:

SqlCeConnection("Data Source=*|DataDirectory|*db.sdf")

SqlCeConnection("Data Source=*|DataDirectory|*/db.sdf")

別のエラーメッセージが表示されました:

The file name is not valid

なぜこれが起こっているのですか? また、これを防ぐにはどうすればよいですか?

4

1 に答える 1

2

デフォルトでは、|DataDirectory| 変数は次のように展開されます。

  • ユーザー コンピューターのディレクトリに配置されたアプリケーションの場合、これはアプリの (.exe) フォルダーになります。
  • ClickOnce で実行されているアプリの場合、これは ClickOnce によって作成された特別なデータ フォルダーになります。
  • Web アプリの場合、これは App_Data フォルダーになります。

Windows7ではディレクトリへの書き込みがC:\program files (x86)\yourexefolderできません。データベースをアプリケーションのサブフォルダーまたは同じフォルダーにインストールすると、このエラーが発生します。

データベースを %APPDATA% ディレクトリにインストールする必要があります

たとえば、C# では、この方法で DataDirectory パスを設定できます。

string myDataDir = Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData) + "\\yourAppDataFolder";

// Set |DataDirectory| value 
AppDomain.CurrentDomain.SetData("DataDirectory",myDataDir);  
于 2012-05-22T10:48:45.840 に答える