2020/09/20

WindowsのホームディレクトリをDドライブに移動させる。

使用しているPCは、ディスクが2本ある。ユーザのホームディレクトリは、通常はC:ドライブにC:\Usersとして作成される。

せっかく2本あるのだから、ユーザのホームディレクトリはD:ドライブにD:\Usersとして移動させたい。

まずは、OSの初期化。途中、アカウントを作成する画面が出るが、このアカウントは最終的に削除するので、適当でよい。(Dドライブへの移行時に、このアカウント名は使えないと言われるようなので、最終的に使いたいアカウント名とは違うものにするほうが良い。)

OSの初期化が終わったら、D:ドライブの直下にD:\relocate.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="amd64"の部分は、32ビット環境であれば「amd64」を「x86」に変更する。

また、<ProfilesDirectory>の中の「D:\Users」は他のドライブが良ければ、希望のドライブレターに変更する。


つづいて、管理者モードでコマンドプロンプトを開き、下記を実行する。

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

あとは、OSの初期化が始まるので、指示に従って操作をする。

なお、この際に作成するアカウントは、今後継続的に使うアカウントなのでちゃんと考えて作成すること。

作業が完了したら、C:\Usersは削除して良い。また、最初に作ったアカウントが残っているかもしれないが、その場合は、そのアカウントを削除すれば良い。


sysprep.exeの実行時に下記のようなエラーが出た場合は、C:\Windows\System32\spopk.dllを、もっと古いものと置き換えると良い。(どのバージョンで出るかは調査していないが、Windows10 1909ではエラーが出る。)

spopk.dllはアクセス権限が限定されているため、そのままでは管理者権限でもファイル名の変更ができない。

また、ファイルの所有者がTrustedInstallerになっており、そのまま権限をつけようとしてもエラーになってしまう。

そこで、spopk.dllファイルのプロパティを開き、「セキュリティ」タブから「詳細設定」に行き、画面上部の所有者情報の横、TrustedInstallerの横にある「変更」をクリック。

「選択するオブジェクト名を選択してください」の欄で、Administratorsを入力し、右横の「名前を確認」ボタンをクリック。正しく入力できていれば、入力したAdministratorsが「PC名\Administrators」に書き換わり、下線が付く。この状態で、OKボタンを押す。その後、OKボタンを何回か押し、spopk.dllファイルのプロパティを一旦閉じる。

再度、spopk.dllファイルのプロパティを開き、「セキュリティ」タブの「編集ボタン」からAdministratorsにフルコントロールを与え、OKボタンを数回押してspopk.dllファイルのプロパティを閉じる。

この状態でファイル名を変更できるはずなので、spopk.dllをspopk_new.dllなどに変更し、別PCから持ってきたspopk.dllを同じフォルダにコピーする。

なお、作業が終わった後は、今あるspopk.dllを削除や名前の変更をし、spopk_new.dllをもとのspopk.dllに戻す。その後、Administratorsにつけていた権限を「読み取りと実行」と「読み取り」だけに戻す。その後、所有者をTrustedInstaller(NT Service\TrustedInstaller)に戻しておく。

2020年9月22日更新

spopk.dllの差し替えはやらないほうが良さそうだ。正常にsysprepは動くように見えるが、その後、Bluescreenが多発する(起動後、10分程度で停止コード:BAD POOL CALLERでブルースクリーンになる)ようだ。

sysprep.exeの実行時に下記のようなエラーが出た場合の正しい対応は、Windowsのセキュリティ更新およびオプションの更新を完全に行うこと。(Windows10 1909ではこれでうまく行った)

Sysprepがspopk.dllでエラーを出しているのは、Windowsがアップデートを当てるために予約済み記憶領域を使っているからのようだ。

The Windows product team is following this thread and wanted to relay the following points 

  • This failures means that an update from WU is currently using reserved storage. Audit mode cannot be entered while reserves are in use. More information on reserved storage is available @

    https://techcommunity.microsoft.com/t5/Storage-at-Microsoft/Windows-10-and-reserved-storage/ba-p/428327
  • This issue should NOT be worked around by copying binaries from other OS releases 
  • Restricting WU updates is a temporary way to circumvent this problem.
  • PG is reviewing this issue and will post an update as to how to better handle this issue. 

Good if you could share EXACT steps to repro this issue.....

https://social.technet.microsoft.com/Forums/ie/ja-JP/0dcbdf32-05a1-4edc-8f22-287998d30de5/sysprep-problem-audit-mode-canamp39t-be-turned-on-if-there-is-an-active-scenario?forum=win10itprosetup
なお、記事中のURLが間違っていたので、上記では修正している。(ba-pの部分で、pが欠落していた。)

(必要はどうかは不明)「更新とセキュリティ」から「詳細オプション」で「Windowsの更新時に他のMicrosoft製品の更新プログラムを受け取る」をONにしておく。

その上で、「更新とセキュリティ」で「更新プログラムのチェック」を行い、オプションの更新を含む、全てのアップデートが適用されていることを確認する。

ひょっとしたら、上記を行わなくても、BITSサービスとWindows Updateサービスを停止すると行けるかもしれないが、そこまでのテストはやっていない。もし止めるのであれば、下記コマンドを行う。

net stop bits
net stop wuauserv


<更新 その2>

上記手順をやる前に、そのPC用のドライバは全て入れてしまって置くのが良いと思われる。BluetoothドライバがWindowsが自動的にインストールするドライバであったのだが、ブルースクリーンが出始めるのは、Bluetoothマウスを接続した後からのように思われる。

正式なBluetoothドライバを入れた後は、ブルースクリーンは出ていないようだ。そのため、spopk.dllの差し替えが原因ではないかもしれない。

0 件のコメント:

コメントを投稿