Windows 11 のユーザーディレクトリを非システムドライブに設定する

/
簡体中文日本語
要約:
新規インストールした Windows 11 で、監査モードと応答ファイルを使い、ユーザーディレクトリを最初から非システムドライブに作成します。

Windows のユーザーディレクトリは既定で C:\Users にあり、デスクトップ、ドキュメント、ダウンロード、ピクチャや、アプリが AppData に保存するキャッシュや設定も、すべてここに入ります。使い続けるうちに、システムドライブはあっという間にいっぱいになります。

回避策はいくつかあります。たとえば、ドキュメントやダウンロードのプロパティで保存場所を変えられますが、移動できるのはそのフォルダーだけで、AppData はそのまま残ります。システムをインストールした後にレジストリを変更したり、mklink /J でディレクトリジャンクションを作る方法もあります。ただ、既存のユーザープロファイルには古いパスがあちこちに残り、アクセス許可も合わないことがあるため、後のアプリのインストールや更新で問題が起きかねません。

そこで、Windows を入れた直後、まだユーザーアカウントを作成していない段階で、ユーザーディレクトリの場所を指定しておくのがすっきりした方法です。最初のプロファイルから新しい場所に作成されます。そのために使えるのが、応答ファイルの ProfilesDirectory という設定です。ここでは、新規インストールした Windows 11 での手順を紹介します。

仕組み

ProfilesDirectory は Microsoft-Windows-Shell-Setup コンポーネントの FolderLocations に属し、oobeSystem という構成パスで有効になります。OOBE は、インストール後に地域の選択、ネットワーク接続、アカウント作成を行う初期セットアップです。ユーザーディレクトリはこの段階の後に作成されます。

OOBE に進む前に、この設定を書いた応答ファイルを Windows に渡します。そこで使うのが監査モードです。インストール後、OOBE の前に組み込みの Administrator アカウントでサインインし、応答ファイルを指定して Sysprep を実行できます。完了後は OOBE に戻ります。

Mermaid diagram

手順

監査モードに入る

Windows を通常どおりインストールし、地域を選択する画面が表示されるまで進めます。ここではまだ先に進まず、Ctrl + Shift + F3 を押します。再起動後、組み込みの Administrator アカウントでデスクトップにサインインし、Sysprep のウィンドウが開きます。このウィンドウはいったん閉じてください。後でコマンドラインから実行します。

監査モードに入る前に、できればネットワークケーブルを抜くか、Wi-Fi を切っておきます。オンラインになるとストアアプリが自動更新されることがあり、このようなユーザー単位の更新は Sysprep の失敗原因になります。オフラインにしておけば、この問題を避けられます。

データドライブを準備する

対象のドライブは NTFS 形式で、別の Windows がインストールされていないものにします。新品のドライブなら、先に「ディスクの管理」で初期化、パーティション作成、フォーマットを済ませます。

Important

監査モードのドライブ文字は、インストーラーで見たものと異なる場合があります。応答ファイルを書く前に、エクスプローラーで対象ドライブの現在の文字を確認してください。

応答ファイルを作成する

メモ帳でファイルを作成し、対象ドライブのルートに保存します。ここでは relocate.xml という名前にし、「ファイルの種類」は「すべてのファイル」、「文字コード」は UTF-8 を選びます。

XML
<?xml version="1.0" encoding="utf-8"?>
<unattend xmlns="urn:schemas-microsoft-com:unattend">
  <settings pass="oobeSystem">
    <component name="Microsoft-Windows-Shell-Setup"
               processorArchitecture="amd64"
               publicKeyToken="31bf3856ad364e35"
               language="neutral"
               versionScope="nonSxS"
               xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State"
               xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
      <FolderLocations>
        <ProfilesDirectory>D:\Users</ProfilesDirectory>
      </FolderLocations>
    </component>
  </settings>
</unattend>

processorArchitecture はシステムに合わせます。一般的な 64 ビット PC では amd64、ARM デバイスでは arm64 を指定します。ProfilesDirectory には目的の場所を指定します。D:\Users は一例です。パスは空にできません。

Sysprep を実行する

コマンドプロンプトを管理者として開きます。Windows Media Player のネットワーク共有サービスも Sysprep の失敗原因になるため、先に停止し、その後で応答ファイルを指定して Sysprep を実行します。

CMD
net stop wmpnetworksvc
%windir%\system32\sysprep\sysprep.exe /oobe /reboot /unattend:d:\relocate.xml

/oobe は完了後に OOBE へ戻り、/reboot は再起動する指定です。/unattend では先ほどの応答ファイルを指定します。しばらくすると再起動し、地域選択画面に戻ります。今度は通常どおりセットアップを進め、ユーザーを作成します。

結果を確認する

システムにサインインしたら、コマンドプロンプトを開きます。

CMD
echo %USERPROFILE%

出力が D:\Users\用户名 のような形になっていれば成功です。末尾の中国語はユーザー名の例示なので、実際には自分のユーザー名が入ります。この場所を記録するレジストリ項目も確認できます。

CMD
reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList" /v ProfilesDirectory

Sysprep が失敗したとき

Sysprep が失敗しても、ウィンドウのメッセージだけでは原因が分からないことが多いので、ログを確認します。保存先は %windir%\System32\Sysprep\Panther です。setupact.log には処理全体が、setuperr.log にはエラーだけが記録されます。error や fail を検索すると、どの段階で失敗したか分かります。

よくある原因は、前述のストアアプリの更新と、ネットワーク共有サービスの停止忘れです。アプリが原因なら、「あるユーザーにインストールされたパッケージが、全ユーザー向けにはプロビジョニングされていない」といったメッセージとアプリ名がログに出ます。PowerShell でそのアプリをアンインストールしてから、Sysprep を再実行します。次のコマンドでは、中国語のアプリ名の部分を実際の名前に置き換えてください。

POWERSHELL
Get-AppxPackage *应用名* | Remove-AppxPackage

Sysprep は同時に一つしか実行できません。重複して起動した場合や、前回の実行が異常終了した場合も、すぐにエラーになることがあります。再起動してからやり直します。

制限事項

この方法を使えるのは、ユーザーディレクトリが作成される前だけです。すでに使い始めたシステムでは、Windows を再インストールしてからやり直す必要があります。一方、後日 Windows を入れ直す際にシステムドライブをフォーマットしても、データドライブのユーザーファイルは残るので、必要なファイルをそのまま取り出せます。

  • Loading...
  • Loading...
  • Loading...
  • Loading...
  • Loading...