Windows OSのTEMP/TMPフォルダの場所を変更して性能向上を図る【Windows 10/11】Tech TIPS

Windows OSの「temp」フォルダには、アプリやシステムで利用するさまざまな一時ファイルが作成される。ただ、デフォルトではシステムドライブに作成されるため、アクセスが集中しやすい。このtempフォルダを別のドライブに分離してパフォーマンスの低下を抑えるための設定方法を紹介する。

» 2022年07月13日 05時00分 公開

この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。

「Tech TIPS」のインデックス

連載目次

Windows OSのTEMP/TMPフォルダの場所を変更して性能向上を図る

対象:Windows 10/Windows 11


Windows OSのtempフォルダとは?

 Windows環境ではさまざまな「環境変数」が定義され、使われている(Tech TIPS「OSの種類によってバッチファイルの処理を切り替える方法」参照)。その中でもよく使われるのは「TEMP」もしくは「TMP」環境変数ではないだろうか。アプリケーションが一時的な作業用のファイルを作成する場合、通常はこのTEMP環境変数の指し示す場所(以下「tempフォルダ」と呼ぶ)に作られるからだ。

 tempフォルダに作成されたファイルは、アプリケーションの終了時には削除されることになっている。だが、実際にはプログラムが終了しても削除されずに残っていることがある(特にログファイルなど)。tempファイルは、既存のファイル名とは重複しないような名前で新規作成されることになっているため、システムの起動や終了などを繰り返していると、tempフォルダの中に多くの一時ファイルが作成されてしまう。

 tempフォルダの内容を確認するには、エクスプローラーや[ファイル名を指定して実行]ダイアログに「%temp%」と入力してtempフォルダを開くとよい(Tech TIPS「Windowsシステムのtempフォルダを簡単に開く」参照)。さまざまな一時ファイルが作成されていることが確認できるはずだ。

Windows OSのtempフォルダの例 Windows OSのtempフォルダの例

 tempフォルダの内容は、基本的にシステムからサインアウトするときには全て削除しても構わないものである。だが、実際にはプログラムによって使われていたり、他のユーザーやサービスが使用したりしていて、削除できないことも多い。結果として、小さなサイズの一時ファイルが多数作成され、それらが削除されずに残ってしまい、空き領域を圧迫したり、システムの負荷を高くしたりしている可能性がある。

 このような事態を少しでも改善する手段として、tempフォルダの場所(ドライブ)を変更するという方法がある。最近ではSSDが安価になってきているので、まずはtempフォルダだけでもC:とは別のSSDドライブなどに分散させてみよう。その後は、ページファイルやユーザードキュメントフォルダ、アプリのインストール先なども順次移動させるとよいだろう(ページファイルの移動についてはTech TIPS「ページファイルを別ドライブに移動してパフォーマンスを向上させる」参照)。

 なおアプリによっては(プログラムのインストーラなど)、tempフォルダにファイルを展開してからシステムを再起動させ、再サインイン後にインストール処理を続行するようなものもある。そのため、tempフォルダをRAMディスクのような(再起動したら内容が消滅する)揮発性のドライブ上に作成することは避けた方がよい。

tempフォルダの場所

 tempフォルダの実際の場所は、次の2カ所ある。それぞれ、システム全体で共通のTEMP/TMP環境変数と、ユーザーごとのTEMP/TMP環境変数によってその場所を指し示すことになっている(「TEMP」「TMP」の違いは後述)。

  • システムフォルダの下(%windir%\Temp
  • ユーザーごとのプロファイルフォルダの下(%USERPROFILE%\AppData\Local\Temp

 システムが起動した直後や、ユーザーがサインインしなくても実行されているサービスなどは、システムフォルダの下にあるtempフォルダを使っている。

 だがユーザーがシステムにサインインした場合、そこから起動されるアプリなどは、ユーザーごとに固有のtempフォルダを利用する。

 これらのフォルダはデフォルトで場所が分かれている。これらを1つのフォルダにまとめることも可能だ。例えば「E:\TEMP」フォルダだけを使うようにしておけば、tempフォルダのクリーンアップ作業などが簡単になる。ただし、一時的に作成されたファイルとはいえ、同一フォルダ内ではシステムやユーザーの間で相互にその内容が閲覧可能になるため、セキュリティを厳しくしている環境では別々のフォルダのままにしておく方が安全だろう。

TEMPとTMP環境変数の違い

 Windows OSでは、tempフォルダの場所は「TEMP」と「TMP」という2つの環境変数で指定している。TEMPもTMPも用途は同じなので、通常はどちらも同じ内容(パス)をセットしておけばよい。

 Windows OSの前身であるMS-DOSではTEMPをよく使っていた。一方、UNIXやLinuxなどでは「/tmp」フォルダを使っていた。そのため、どちらで開発されたアプリでも同じように動作するように、現在では2つの環境変数が用意され、利用されている。

tempフォルダの場所を1カ所にする

 tempフォルダの場所を移動して、システム全体で1カ所だけにするには、次のようにする。

  1. システム環境変数のTEMPとTMPに新しいtempフォルダのパスをセットする
  2. ユーザー環境変数のTEMPとTMPを削除する(もしくは1.と同じパスをセットしてもよい)

 1.は、システム起動時に使われるtempフォルダの場所を指定する環境変数である。これを設定することにより、C:\Windows\Temp以外の場所がtempフォルダとして利用されるようになる。

 2.でユーザー環境変数のTEMP/TMPを削除しているのは、システム側のTEMP/TMP環境変数の内容がユーザー環境でもそのまま使われるようになるからだ(もし同名の環境変数があれば、ユーザー側の内容が優先される)。結果として、1.で設定したtempフォルダがユーザー環境でもそのまま利用されることになる。

 以下、tempフォルダの環境変数を変更する手順を紹介する。

手順1――tempフォルダを作成してアクセス権を設定する

 最初にtempフォルダとして利用するフォルダを作成し、アクセス権を設定する。指定したフォルダが存在しない場合は自動的に作成されるが、アクセス権やフォルダの構成などによっては作成に失敗することもあるので、あらかじめ作成しておく方がよい。

 ここでは増設したE:ドライブ上に\TEMPというフォルダを作成して、そこをtempフォルダとして利用することにする(日本語や記号、空白文字などを含むフォルダ名はトラブルの元なので、避けること)。このパスは環境に応じて適宜変更していただきたい。

 アクセス権は、AdministratorsグループとUsersグループ、およびビルトインのSystemアカウントなどに対して読み書きを許可すればよい。もっとも、C:とは別のドライブを使っているならもっと簡単に、「Everyoneに対してフルコントロールを許可」でよいだろう。

 コマンドプロンプト上で作業するなら、次のようなコマンドを実行する。

cacls <tempフォルダのパス> /g everyone:f



 caclsは、アクセス権を確認/設定するためのコマンドである(Tech TIPS「WindowsのcaclsコマンドでACLを編集する」と、Windows OS入門「アクセス制御リストACL」参照)。

temp用フォルダの作成とアクセス権の設定 temp用フォルダの作成とアクセス権の設定

 コマンドラインの実行が難しい場合は、エクスプローラーで設定してもよい。E:ドライブのルート上にTEMPフォルダを作成後、次の画面のようにEveryoneに対してフルコントロールを許可しておく。

アクセス権の設定例(GUI編) アクセス権の設定例(GUI編)

手順2――環境変数の設定ダイアログを開く

 tempフォルダを用意できたら、次は環境変数を設定する。

 環境変数の設定や確認を行うには、[システムの詳細設定]画面などから、[環境変数]の設定画面を開く必要がある。それには[Windows]+[R]キーを押して「ファイル名を指定して実行」ダイアログを開き、「sysdm.cpl」と入力して実行する(詳細はTech TIPS「コントロールパネルの[システム](相当)や[システムのプロパティ]を素早く開く方法」参照)。そして表示されたプロパティ画面から、[詳細設定]タブの[環境変数]ボタンをクリックする。

「システムのプロパティ」を開く 「システムのプロパティ」を開く
環境変数の編集ダイアログを開く 環境変数の編集ダイアログを開く

手順3――ユーザー環境変数の削除

 環境変数の確認画面が表示されたら、上にあるユーザー環境変数側で[TEMP]を選んで[削除]ボタンを押し、さらに[TMP]を選んでこれも[削除]する。

ユーザー環境変数の削除 ユーザー環境変数の削除
ユーザー環境変数側のTEMPとTMPは不要なので両方とも削除する。削除しておくと、システム側のTEMPとTMPが継承され、そのまま使われる。

手順4―システム環境変数の設定変更

 次はシステム環境変数側で[TEMP]を選んで[編集]をクリックし、新しいtempフォルダのパスを指定する。同様にして[TMP]変数にも同じパスをセットする。

システム環境変数の設定 システム環境変数の設定
システム環境変数側のTEMPとTMPを選んで、それらにtempフォルダのパスを設定する。両方とも同じ値にセットしておけばよい。

●コマンドラインから環境変数をセットする

 システム環境変数をコマンドラインから設定するには、管理者権限でコマンドプロンプトを開いて、「setx /m <環境変数名> <値>」というコマンドを実行する。「/m」はシステム環境変数を設定するオプションで、これがないとユーザー環境変数が設定される(詳細はTech TIPS「setxで環境変数の値を設定する(基本編)」参照)。

setx /m TEMP E:\TEMP
setx /m TMP E:\TEMP



 ただしsetxコマンドでは環境変数そのものの削除はできないので(空の値を設定することは可能だが)、ユーザー環境変数のTEMPとTMPを操作したければ、システム環境変数と同じ値を設定しておくとよい。それには次の「方法1」「方法2」のどちらかを実行する。

※方法1:システム環境変数と同じ値を設定する方法
setx TEMP E:\TEMP
setx TMP E:\TEMP

※方法2:システム環境変数のTEMPとTMPの値を継承する方法。この場合は、% の直前に ^ を付けて環境変数の展開を抑制すること
setx TEMP ^%TEMP^%
setx TMP ^%TMP^%



コマンドラインで環境変数「TEMP」「TMP」のフォルダのパスを変更する コマンドラインで環境変数「TEMP」「TMP」のフォルダのパスを変更する

設定の確認

 設定が完了したら、システムを再起動する(システム環境変数を変更した場合は再起動が、ユーザー環境変数を変更した場合は再サインインが、それぞれ必要)。

 再起動後、サインインしてコマンドプロンプトを開き、「set t」コマンドでTEMPとTMPの値が正しく設定されていることを確認する。また、tempフォルダ中にはすでに一時ファイルやログファイルなどが幾つか作成されているはずなので、それも確認しておく。

設定の確認 設定の確認

 正しく設定されていなかったり、元の「C:\Users\〜」で始まるパス名が表示されたりしているようなら、もう一度設定を確認する。

 パスが不正だったり、書き込みの権限が不足しているようだと、例えばアプリなどが正しく起動しなかったり、見たことのない意味不明なエラーが発生したりすることが多い。

 設定が完了したら、元のtempフォルダ(C:\Windows\Temp%USERPROFILE%\AppData\Local\Temp)の内容は削除してもよい。ただし無用なトラブルを防ぐため、元のtempフォルダそのものは空のまま残しておいた方がいいだろう(システムに大きな更新などを適用すると、tempフォルダの設定がデフォルト状態に戻る、といったことがあるため)。

新ユーザーのための設定

 ユーザー環境変数のTEMPとTMPは、新しいユーザーがシステムにサインインした時に自動的に作成される。そのため各ユーザーは、最初にサインインしたときに、それぞれユーザー側のTEMPとTMPの削除を行う必要がある。これをしないと、デフォルトのtempフォルダが利用される。上述の環境変数の編集画面を開き、ユーザー環境変数側のTEMPとTMPを削除すればよい。

■更新履歴

【2022/07/13】Windows 11に対応しました。

【2019/02/15】最新状況に合わせて、内容を更新しました。

【2004/02/14】初版公開。


「Tech TIPS」のインデックス

Tech TIPS

Copyright© Digital Advantage Corp. All Rights Reserved.

スポンサーからのお知らせPR

注目のテーマ

Microsoft & Windows最前線2025
AI for エンジニアリング
ローコード/ノーコード セントラル by @IT - ITエンジニアがビジネスの中心で活躍する組織へ
Cloud Native Central by @IT - スケーラブルな能力を組織に
システム開発ノウハウ 【発注ナビ】PR
あなたにおすすめの記事PR

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。