0

ユーザーの一時ディレクトリにあるファイルにデータベース接続設定を書き込むアプリケーションに、少し奇妙な問題があります。

標準呼び出し GetTempPath を使用し、このパスを使用してファイルを保存します。アプリをビルドしてデプロイします。99/100 のマシンが動作し、それらのファイルをユーザーの一時ディレクトリに保存します (XP および Win7 ユーザーを含む)。

ただし、1 人のユーザー (Win 7 Pro 64 ビット) に気付きました。プログラムがユーザーの一時パスに接続ファイルを作成するたびに、一時ディレクトリに新しいフォルダー (約 5/6 のランダムな文字) が作成され、保存されます。そこにあるファイル!これは、ユーザーがアプリを再起動するたびに、設定を取得できず (最後に使用したランダム フォルダーを保存する機能がないため)、ユーザーは実質的に設定を失うことを意味します。したがって、プログラムは一時パスに新しいランダムフォルダーを何度も作成し続けます。奇妙な!

他の誰かがこの問題を抱えていましたか、それともここで何が起こっているのか知っていますか? 私のコードではなく、OSに関係があると思われます。

4

1 に答える 1

0

Path.GetTempPathは、一時ファイルのフォルダーのみを取得します。Path.GetTempFileNameを使用しているようです。

その仕様により、最初の文は「ディスク上に一意の名前のゼロバイトの一時ファイルを作成し、そのファイルの完全なパスを返します。」と述べています。既に存在する一時ファイルは返されません。一時的に設定したい場合は、呼び出すのに適した関数ですが、ファイルの長さをゼロバイトにすることができない限り、関数は同じ場所を返さないことに注意してください。

ファイルに再度アクセスしたい場合は、設定ファイルを別の場所に置くか、より永続的な解決策を使用してください (これにより、デフォルト値を設定し、実行時に変更/保存/ロードできます)。特に怠惰になりたい場合は、GUID を作成するか、キーボード (sdhfuisdhfusdhc) でランダムな文字をマッシュアップし、それをハードコードされたファイル名として使用します。例:Path.GetTempPath()+"sdhfuisdhfusdhc";

于 2012-11-18T10:05:28.197 に答える