2011-07-18 19 views
6

私のアプリケーションには少し問題があります。アプリケーションは、最初に実行したときにC:\ProgramData\ProgramName\フォルダにSQLiteデータベースを格納します。私はデータベースを削除するかどうかをテストしたかったので、アプリケーションで新しいデータベースを作成することができます。起動時に、SysUtilsのFileExists(filename)機能を使用してファイルが存在するかどうかを確認します。しかし、ProgramNameフォルダを削除しても、常にTrueを返します。Windows 7のC:/ ProgramDataからファイルを削除しても、実際にファイルは削除されませんか?

別のフォルダ(%AppData%など)を使用しても問題ありません。

ここに何がありますか? FileExists関数が常にTrueを返すのはなぜですか?

+1

プログラムに書き込みアクセス権がありますか?そうでなければリダイレクションシムを打つかもしれません。 – CodesInChaos

+0

@CodeInChaosリダイレクトシムとは何ですか? – evilone

+0

%AppData%\ Local \ VirtualStore \ ProgramData \ ProgramNameフォルダの仮想データベースファイルも見つかりました。 – evilone

答えて

2

標準ユーザー(UACがアクティブな場合は管理者を含む)には、その場所に対する削除権限がありません。

ファイルを削除するには標準ユーザーが必要な場合は、ファイルを保存するために別の場所を見つける必要があります。

+0

すべてのユーザーがファイルにアクセスできる正しい場所はどこですか? – evilone

+0

@eviloneすべてのユーザーがファイルの1つのインスタンスを共有しますか? –

+0

はい、すべてのユーザーがそのデータベースファイルにアクセスできるようにします – evilone

関連する問題