スポンサーリンク

再びエクスプローラのプレビュー機能でExcelやWordなどのプレビューができない。

Windows11
スポンサーリンク

先日のWindows Updateでセキュリティが強化されたようです。
お陰でエクスプローラのプレビュー機能でExcelやWordなどのプレビューができなくなりました。

スポンサーリンク

Excelファイルなどのプレビューができない

ネットからダウンロードしたExcelファイルなどのプレビューができなくなりました。
内容は次のリンク先にサラッとかいてあります。

エクスプローラーは、インターネットからダウンロードされたファイルのプレビュー機能を自動的に無効にします - Microsoft サポート

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だと動かない可能性もあるかと思います。

誰かがもっと便利なツールを作ってくれることを期待して待つことにします。

当ブログの記事は全て記載した時点での内容となります。ご覧頂いた時期によっては情報が古くなっていることがあります。

Windows11
スポンサーリンク
シェアする
periodをフォローする

コメント

タイトルとURLをコピーしました