Windows 10 Version 1803 以降の環境で Cookie が正常に保存できない

本記事の最新版をフォーラムにて紹介しております。

記事の改訂が含まれる場合がございますので、フォーラムの情報を参照してください。
フォーラムへのリンク


こんにちは、Windows デプロイ サポート チームの弓正です。

Windows 10 Version 1803 以降の環境において Cookie が正常に保存できない事象が確認されております。
この事象に起因し、Internet Explorer の Cookie を利用する他社製品も影響を受ける可能性がありますので、
本事象についてご紹介いたします。

この事象が発生するシナリオは以下の2つです。
・Windows 10 Version 1709 の環境にて Sysprep による CopyProfile を使用してイメージ展開を行った後、機能更新を適用した場合
・Windows 10 Version 1803 もしくはそれ以降の環境にて Sysprep による CopyProfile を使用してイメージ展開を行った場合
(Windows 10 Version 1703 もしくはそれ以前の環境で Sysprep による CopyProfile を使用してイメージ展開し機能更新適用しても本事象は発生しません。)

本事象の対処方法をマスターイメージ作成段階、展開済みの段階、それぞれ記載いたします。

マスター イメージの作成段階で本事象を回避する場合、以下の手順を実施してください。
--------------------------------------------------------------------
1. マスター イメージを作成している端末においてメモ帳を開き、以下の内容を記載し、"SetupComplete.cmd" のファイルー名で、一旦任意の場所に保存します。

-------------
rmdir /s /q c:\Users\Default\AppData\Local\Microsoft\Windows\Webcache
rmdir /s /q c:\Users\Default\AppData\Local\Microsoft\Windows\INetCache
del %0
-------------
※ del %0 コマンドで、実行後に自分自身の .bat ファイルも削除し、展開後のテンプレートに残らないようになっております。

2. 保存した "SetupComplete.cmd" ファイルをテンプレートの
以下のフォルダー内に保存します。

C:\Windows\Setup\Scripts
※ Scripts フォルダは既定で存在しませんので新規に作成します。

3. これまでの手順で Sysprep を行います。
----------------------------------------------------------------------

すでに展開済みの環境で問題が発生している場合、以下のスクリプトを vbs 形式で保存し、対象環境に管理者権限で実施していただくことで、既存ユーザーおよび新規ユーザーに対して事象が解消されます。
----------------------------------------------------------------------
On Error Resume Next
Dim objFileSys
Dim objFolder
Dim objSubFolder

strUsersFolder = "C:\Users\"
strWebCacheFolder = "\AppData\Local\Microsoft\Windows\WebCache\"
strINetCacheFolder = "\AppData\Local\Microsoft\Windows\INetCache\IE\"
strINetCacheFolderLow = "\AppData\Local\Microsoft\Windows\INetCache\Low\IE\"

Set objFileSys = WScript.CreateObject("Scripting.FileSystemObject")
Set objShell = WScript.CreateObject("WScript.Shell")

ret = objShell.Run("net stop COMSysApp",0,true)
ret = objShell.Run("taskkill /F /IM dllhost.exe",0,true)
ret = objShell.Run("taskkill /F /IM taskhost.exe",0,true)
ret = objShell.Run("taskkill /F /IM taskhostex.exe",0,true)
ret = objShell.Run("taskkill /F /IM taskhostw.exe",0,true)

Set objFolder = objFileSys.GetFolder(strUsersFolder)

For Each objSubFolder In objFolder.SubFolders

If objSubFolder.Name <> "All Users" And _
objSubFolder.Name <> "Public" And _
objSubFolder.Name <> "Default User" Then

strDelFolder = strUsersFolder + objSubFolder.Name + strWebCacheFolder
If objFileSys.FolderExists(strDelFolder) Then
If objFileSys.GetFolder(strDelFolder).Files.Count > 0 Then
objFileSys.DeleteFile strDelFolder + "*.*", true
End If
End If

strDelFolder = strUsersFolder + objSubFolder.Name + strINetCacheFolder
If objFileSys.FolderExists(strDelFolder) Then
If objFileSys.GetFolder(strDelFolder).Files.Count > 0 Then
objFileSys.DeleteFile strDelFolder + "*.*", true
End If
If objFileSys.GetFolder(strDelFolder).SubFolders.Count > 0 Then
objFileSys.DeleteFolder strDelFolder + "*", true
End If
End If

strDelFolder = strUsersFolder + objSubFolder.Name + strINetCacheFolderLow
If objFileSys.FolderExists(strDelFolder) Then
If objFileSys.GetFolder(strDelFolder).Files.Count > 0 Then
objFileSys.DeleteFile strDelFolder + "*.*", true
End If
If objFileSys.GetFolder(strDelFolder).SubFolders.Count > 0 Then
objFileSys.DeleteFolder strDelFolder + "*", true
End If
End If
End If
Next

ret = objShell.Run("net start COMSysApp",0,true)

Set objSubFolder = Nothing
Set objFileSys = Nothing
Set objShell = Nothing

----------------------------------------------------------------------------

本ブログは予告なく変更される場合がございますのでご了承下さい。