-PR-
解決済み

一時ファイルについて win32 GetTempFileName

  • すぐに回答を!
  • 質問No.5371044
  • 閲覧数1412
  • ありがとう数1
  • 気になる数0
  • 回答数1
  • コメント数0

お礼率 74% (81/109)

windowsの一時ファイルについて質問です。
一時ファイルは基本的にプログラム終了時には削除するものだが、万が一、不正な処理によって削除できなかった場合に不要なファイルが残ってもいいようにあるということを学んだのですが、そこでいくつか質問があります。
1.残ってしまった一時ファイルはいつ削除されるのでしょうか?
2.GetTempFileNameを使って作成した一時ファイルは、Windows のシャットダウン時に自動的に削除されることはありません。とMSDNに書いてあったのですが、シャットダウン時に自動的に削除される一時ファイルも作ることができるのでしょうか?
3.GetTempFileNameを使う理由がわかりません。なぜ、わざわざファイル名を生成してしかも拡張子が .tmp なのでしょうか?普通に一時フォルダーにファイルを作ってはダメなのでしょうか?例えば 任意の名前.txt これだと自動で削除されなくなるとか??

例えば、そんな重要じゃないけど残ってたらうれしいな程度のファイル(ソフトウェアの前回の状態を記憶したファイルなど)を一時フォルダーに作って保存して置くってのはありなのでしょうか?
通報する
  • 回答数1
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

質問者が選んだベストアンサー

  • 回答No.1
レベル14

ベストアンサー率 53% (2177/4070)

>残ってしまった一時ファイルはいつ削除されるのでしょうか?

作成した場所にもよりますが…自主的に削除するまで…でしょうか。
環境変数TMPやTEMPで設定されている箇所に作成した場合は、「ディスク・クリーンアップ」で削除されるかと思われます。

>GetTempFileNameを使って作成した一時ファイルは、Windows のシャットダウン時に自動的に削除されることはありません。とMSDNに書いてあったのですが、シャットダウン時に自動的に削除される一時ファイルも作ることができるのでしょうか?

シャットダウン時…ではありませんが、CreateFile()の第6引数のファイル属性でFILE_FLAG_DELETE_ON_CLOSEを付けると、使用後に削除してくれる…らしいです。
試したことはありませんが。
MoveFileEx()で第3引数にMOVEFILE_DELAY_UNTIL_REBOOTを付与することで、再起動時に移動(第2引数をNULLにすることで削除)できます。
# デバイスドライバ等やMicrosoft Updateでの更新の適用に再起動を必要とするのはこのため。
# ちなみに、こちらもシャットダウン時ではなくOSの起動処理の途中で処理されます。

>GetTempFileNameを使う理由がわかりません。なぜ、わざわざファイル名を生成してしかも拡張子が .tmp なのでしょうか?

慣例的に一時ファイルの拡張子に.tmpを使用しているから…でしょう。

>普通に一時フォルダーにファイルを作ってはダメなのでしょうか?

別に問題ありませんよ。

>例えば 任意の名前.txt これだと自動で削除されなくなるとか??

元々、GetTempFileName()を使用しても自動で削除されたりはしません。
あくまでも「一時ファイルのファイル名を(フルパスで)取得する」だけです。
# ある程度ファイル名の形式が指定できたり、「確実に使用中ではないファイル名」を生成できたりするだけです。
# 使用中でない~を確実にするために空ファイルの作成をすることはありますが。(第3引数に0を指定した場合)

>そんな重要じゃないけど残ってたらうれしいな程度のファイル(ソフトウェアの前回の状態を記憶したファイルなど)を一時フォルダーに作って保存して置くってのはありなのでしょうか?

ありと言えばありですが…いつ削除されるかわかりませんよ。
ということで、「ソフトウェアの前回の状態を記憶したファイルなど」はソフトウェアのインストールされたディレクトリや、それ用のディレクトリに保存します。
# XPなら「Documents and Settings」の下の各アカウントディレクトリの下にある「Application Data」や「Local Settings」の下にディレクトリを作成して入れたり、「My Documents」の下に入れたり…
# これらのディレクトリ名もAPIで取得できます。
お礼コメント
yozakura20

お礼率 74% (81/109)

丁寧にありがとうございます。
とても勉強になりました!
投稿日時 - 2009-10-18 04:57:35
このQ&Aのテーマ
このQ&Aで解決しましたか?
関連するQ&A
こんな書き方もあるよ!この情報は知ってる?あなたの知識を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-

特集


開業・独立という夢を持つ人へ向けた情報満載!

ピックアップ

-PR-
ページ先頭へ