
windowsの一時ファイルについて質問です。
一時ファイルは基本的にプログラム終了時には削除するものだが、万が一、不正な処理によって削除できなかった場合に不要なファイルが残ってもいいようにあるということを学んだのですが、そこでいくつか質問があります。
1.残ってしまった一時ファイルはいつ削除されるのでしょうか?
2.GetTempFileNameを使って作成した一時ファイルは、Windows のシャットダウン時に自動的に削除されることはありません。とMSDNに書いてあったのですが、シャットダウン時に自動的に削除される一時ファイルも作ることができるのでしょうか?
3.GetTempFileNameを使う理由がわかりません。なぜ、わざわざファイル名を生成してしかも拡張子が .tmp なのでしょうか?普通に一時フォルダーにファイルを作ってはダメなのでしょうか?例えば 任意の名前.txt これだと自動で削除されなくなるとか??
例えば、そんな重要じゃないけど残ってたらうれしいな程度のファイル(ソフトウェアの前回の状態を記憶したファイルなど)を一時フォルダーに作って保存して置くってのはありなのでしょうか?
No.1ベストアンサー
- 回答日時:
>残ってしまった一時ファイルはいつ削除されるのでしょうか?
作成した場所にもよりますが…自主的に削除するまで…でしょうか。
環境変数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で取得できます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- ノートパソコン ソフトアンインストール残存ファイル 3 2022/09/13 18:15
- Google Drive Googleドライブで削除できないファイルがある。 5 2023/05/11 09:39
- UNIX・Linux JSLinuxについて。 Linuxのこの手順のプログラミングは合っているでしょうか。 ①ホームディ 2 2022/06/20 15:33
- 画像編集・動画編集・音楽編集 動画のトリミング 結合 削除が可能なフリーソフト 2 2022/05/02 22:08
- PowerPoint(パワーポイント) エクセルのマクロについて教えてください。 1 2022/10/03 09:55
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/03/12 10:10
- Outlook(アウトルック) 【 Windows 10 】アドレス帳に正しくインポートを完了させたい。 3 2023/04/23 13:41
- PDF PDFを自動添付したメールを送信してくれるツールを探しています。 2 2023/02/07 15:19
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/07/06 17:46
- Windows 95・98 再質問 5 2022/11/29 08:58
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【Excel】[Expression.Error] ...
-
共有フォルダに誰が何にアクセ...
-
Excel VBA 処理後データが重た...
-
amifldrv64.sysについて教えて...
-
Excel2007 2003の互換性
-
特定のフォルダに入れたファイ...
-
特定のエクセルファイルを起動...
-
仕事のファイルを共有フォルダ...
-
.dbfファイルの急増
-
Dream weaverで、誤ってファイ...
-
事務の派遣で働いています。多...
-
VBAでCSVファイルが使用中かど...
-
mdbファイル フォームを開くと...
-
Batch: フォルダ内の特定のファ...
-
“~”のファイルについて
-
ASP.Netで使えるブログツール
-
画像の貼り付けかたがわかりま...
-
相手のPCにVBAからメッセ...
-
メールで添付されたCSVファイル...
-
HttpWebRequestのレスポンスを...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
【Excel】[Expression.Error] ...
-
特定のエクセルファイルを起動...
-
Batch: フォルダ内の特定のファ...
-
共有フォルダに誰が何にアクセ...
-
Access VBA を利用して、フォル...
-
VBAでCSVファイルが使用中かど...
-
AccessVBAで作成したExcelファ...
-
(Excelマクロ)datファイルをエ...
-
excelを共有ファイルにすると行...
-
【アクセス】「ほかのユーザー...
-
社内Excel共有ブックでの保存ト...
-
tmpファイル なぜできる?削除...
-
拡張子が「cda」のファイルを聞...
-
WEBクエリが使えない場合のHPデ...
-
月が変わったら自動でシートが...
-
Excel VBA 処理後データが重た...
-
ファイルの途中に文字列を挿入
-
相手のPCにVBAからメッセ...
-
mdbファイル フォームを開くと...
-
大量のCSVデータを行列の変換を...
おすすめ情報