先日のWindows Updateでセキュリティが強化されたようです。
お陰でエクスプローラのプレビュー機能でExcelやWordなどのプレビューができなくなりました。
Excelファイルなどのプレビューができない
ネットからダウンロードしたExcelファイルなどのプレビューができなくなりました。
内容は次のリンク先にサラッとかいてあります。
2025 年 10 月 14 日以降にリリースされた Windows セキュリティ更新プログラム以降、エクスプローラーはインターネットからダウンロードされたファイルのプレビュー機能を自動的に無効にします。 この変更は、ユーザーが安全でない可能性のあるファイルをプレビューするときに NTLM ハッシュが漏洩する可能性のある脆弱性を防ぐことで、セキュリティを強化するように設計されています。 詳細については、この変更に関してよく寄せられる次の質問を確認してください。
とあります。
また「よくある質問」には
この動作をオーバーライドまたはブロック解除するにはどうすればよいですか?
ファイルとそのソースの両方の安全性に自信がある場合は、インターネット セキュリティ ブロックを削除できます。ダウンロードしたファイルのブロックを削除するには、エクスプローラーでファイルを右クリックし、[プロパティ] を選択し、[ブロック解除] を選択します。
注: 変更はすぐには有効にならない場合がありますが、次のログイン後に有効になります。
インターネット ゾーン ファイル共有上のファイルのブロックを削除するには、インターネット オプション コントロール パネルの [セキュリティ] タブを使用して、ファイル共有のアドレスをローカル イントラネットまたは信頼済みサイトのセキュリティ ゾーンに追加します。
警告: この構成の変更により、一覧表示されているファイル共有のすべてのファイルのセキュリティ体制が緩和されます。
と書かれています。
1番目のプロパティで全般タブのセキュリティのチェックボックス「許可する」にチェックを入れればプレビューできることは確認しました。

しかし2番目のインターネットのプロパティの信頼済みサイトのセキュリティ ゾーンに追加は効果がありませんでした。
調べるとChrome・Edge・FirefoxがWindowsの「信頼済みサイト」設定(inetcpl.cpl)を参照していないという話が出てきたりします。
真偽がわからないので2番目は諦めました。
一度に多くのExcelファイルをプレビューできるようにするには…
近い将来に使えなくなることは知ってますが、取り急ぎVBSで作れないだろうか。。。
ということで作ってみました。
もちろんセキュリティ的には良くないことなんですけどね。
苦戦した結果、VBSとPowerShellでなんとかなりました。
デスクトップ上にUnlock.ps1という名前のファイルとUnlockExcel.vbsという名前のファイルを作成します。
文字コードはShift_jisです。
まずはUnlock.ps1をエディタで開き
param (
[string]$ListPath
)
if (!(Test-Path $ListPath)) {
Write-Host "ファイルリストが見つかりません: $ListPath"
exit
}
$paths = Get-Content -Path $ListPath -Encoding UTF8
foreach ($rawPath in $paths) {
$path = $rawPath.Trim()
if (-not (Test-Path $path)) {
continue
}
$folder = Split-Path -Parent $path
$log = Join-Path $folder "MotW_Log.txt"
try {
Remove-Item -LiteralPath $path -Stream Zone.Identifier -Force -Confirm:$false -ErrorAction SilentlyContinue
if (Get-Item -LiteralPath $folder -Stream Zone.Identifier -ErrorAction SilentlyContinue) {
Remove-Item -LiteralPath $folder -Stream Zone.Identifier -Force -Confirm:$false -ErrorAction SilentlyContinue
}
# BOM付きUTF-8ファイルが存在しない場合は初期化
if (-not (Test-Path $log)) {
"" | Out-File -FilePath $log -Encoding utf8
}
Add-Content -Path $log -Value ("Unlock succeeded: " + $path)
} catch {
Add-Content -Path $log -Value ("Unlock failed: " + $path + " - " + $_)
}
}
コピペして保存します。
次にUnlockExcel.vbsをエディタで開きます。
Option Explicit
Dim fso, shell, i, psPath, tempListPath, fileList, cmd
Set fso = CreateObject("Scripting.FileSystemObject")
Set shell = CreateObject("WScript.Shell")
psPath = "C:\Users\XXX\Desktop\Unlock.ps1"
tempListPath = fso.GetSpecialFolder(2) & "\motw_filelist.txt" ' %TEMP%\motw_filelist.txt
If Not fso.FileExists(psPath) Then
MsgBox "PowerShellスクリプトが見つかりません: " & psPath, 48, "エラー"
WScript.Quit
End If
If WScript.Arguments.Count = 0 Then
MsgBox "Excelファイルをこのスクリプトにドラッグ&ドロップしてください。", 64, "MotW解除"
WScript.Quit
End If
' 一時ファイルにファイルパスを書き出す(UTF-8)
Set fileList = fso.CreateTextFile(tempListPath, True, True)
For i = 0 To WScript.Arguments.Count - 1
fileList.WriteLine WScript.Arguments(i)
Next
fileList.Close
' PowerShellに一時ファイルのパスを渡す
cmd = "powershell.exe -ExecutionPolicy Bypass -File """ & psPath & """ -ListPath """ & tempListPath & """"
shell.Run cmd, 1, True
コピペして補保存します。
この時、7行目の
psPath = "C:\Users\XXX\Desktop\Unlock.ps1"
のところはファイルの置いてあるパスに変更します。
私はデスクトップに置いてあるのでこんなパスになってます。
(XXXはユーザー名)
あとはExcelファイルをドラッグして、UnlockExcel.vbsのアイコンの上に落とすだけ。
もっとシンプルにしたかったけど、私のPCではこれでないと動いてくれませんでした。
なので他の方のPCだと動かない可能性もあるかと思います。
誰かがもっと便利なツールを作ってくれることを期待して待つことにします。

コメント