1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

朝一にSharePointOnlineの「エクスプローラーで開く」が動かない問題

Last updated at Posted at 2025-07-19

そもそもの経緯は過去に記事にしたnoteを見てください。

まぁウチの会社が「OneDriveクライアント」を利用しておけばこのようなことにはならなかったのですが、事情があるのでしょう。
情報がまばらで少なく、公式でもedgeでの不具合についてはあまり付言されてない。要するに『OneDrive同期クライアントをいい加減使いやがれ!』ってことか?

公式:

SharePoint Online では、エクスプローラーで開く機能を使わないか、使う場合も利用頻度を抑えて使用する必要があります。
当該機能が持つ様々なリスクを考慮すると、一般ユーザーの共通プラットフォームとして展開することはお勧めできません。

SharePointOnlineの「エクスプローラーで開く」機能は、WebDAVプロトコルを使用してファイルシステムアクセスしていますが、Azure AD認証のトークンの期限があり、保持時間は8~10時間程度らしい。
それで従来のファイルサーバー的な使い方をすれば、当然支障が出るわけです。

本部の情シス部門からの対処方はIEの互換モードのクッキーと一時ファイルを削除せよとのこと。うん。まぁそれが分かりやすい方法でしょうね。でもほぼ毎朝その操作をしなきゃならんのは正直面倒くさい。

そこでPowerShellで直接Cookie削除してしまえってことでスクリプトを組んでみました。

COMオブジェクトは利用しない方が良い(できない)

最初COMオブジェクトでedgeの操作をしたらいいんじゃね?位の軽い考えでしたが、どうも、IEやEdgeのCOMオブジェクトを通じてのクッキー管理方法が公開されてないようです。主にセキュリティ上の理由ですね。そりゃそうか。
そこでRunDll32 + InetCpl.cplでWindowsのハードに近い制御命令を使って強引にクッキーと一時ファイルの削除をすることにしました。
というかClaudeちゃんに推奨されました。さすがです。

RunDll32によるIE互換モード操作

RunDll32.exeは、Windowsに古くから存在する「DLL関数実行エンジン」で、これを使ってEdge IE互換モードのクッキーと一時ファイルを削除します。

# Edge IE互換モードのクッキー削除
Start-Process "RunDll32.exe" -ArgumentList "InetCpl.cpl,ClearMyTracksByProcess 2" -Wait -WindowStyle Hidden

# 一時ファイル削除
Start-Process "RunDll32.exe" -ArgumentList "InetCpl.cpl,ClearMyTracksByProcess 4" -Wait -WindowStyle Hidden

「ClearMyTracksByProcess」の意味は、「MyTracks」は「ユーザーの行動履歴」を、「ByProcess」は「プロセス単位で処理する」ことを示しています。

ClearMyTracksByProcessパラメータ詳細

パラメータ 削除対象 用途
1 履歴 ブラウジング履歴
2 クッキー 認証トークン削除
4 一時ファイル キャッシュクリア
8 フォームデータ 入力履歴
16 パスワード 保存パスワード
255 すべて 全データ削除

実装上の重要ポイント

  1. Low Integrity Level実行

    # IE互換モードはLow Integrity Levelで動作
    # 通常のMedium Integrity Level実行では効果なし
    
  2. 同期実行の重要性

    # -Wait パラメータにより削除完了を待機
    Start-Process "RunDll32.exe" -ArgumentList "InetCpl.cpl,ClearMyTracksByProcess 2" -Wait
    
  3. エラーハンドリング

    try {
        Start-Process "RunDll32.exe" -ArgumentList "InetCpl.cpl,ClearMyTracksByProcess 2" -Wait -WindowStyle Hidden
        Write-Host "✓ Edge IE互換モードのクッキーとキャッシュを正常に削除しました" -ForegroundColor Green
    }
    catch {
        Write-Host "✗ エラーが発生しました: $($_.Exception.Message)" -ForegroundColor Red
    }
    

ツール実装

# Edge IE互換モードのクッキー削除スクリプト
# SharePoint Online WebDAV接続用

Write-Host "Edge IE互換モードのクッキー削除を開始します..." -ForegroundColor Yellow

try {
    # RunDll32を使用してIE互換モードのクッキーとキャッシュを削除
    # パラメータ説明:
    # 1 = 履歴
    # 2 = クッキー
    # 4 = 一時ファイル
    # 8 = フォームデータ
    # 16 = パスワード
    # 32 = すべて
    
    Write-Host "クッキーを削除中..." -ForegroundColor Cyan
    Start-Process "RunDll32.exe" -ArgumentList "InetCpl.cpl,ClearMyTracksByProcess 2" -Wait -WindowStyle Hidden
    
    Write-Host "一時ファイルを削除中..." -ForegroundColor Cyan
    Start-Process "RunDll32.exe" -ArgumentList "InetCpl.cpl,ClearMyTracksByProcess 4" -Wait -WindowStyle Hidden
    
    Write-Host "" # 空行
    Write-Host "✓ Edge IE互換モードのクッキーとキャッシュを正常に削除しました" -ForegroundColor Green
    Write-Host "✓ SharePoint OnlineのWebDAV接続を再試行できます" -ForegroundColor Green
    
    # 削除完了の時刻を表示
    $currentTime = Get-Date -Format "yyyy/MM/dd HH:mm:ss"
    Write-Host "削除完了時刻: $currentTime" -ForegroundColor Gray
}
catch {
    Write-Host "" # 空行
    Write-Host "✗ エラーが発生しました: $($_.Exception.Message)" -ForegroundColor Red
    Write-Host "手動でEdgeの設定からクッキーを削除してください" -ForegroundColor Yellow
}

Write-Host "" # 空行
Write-Host "スクリプト実行完了。何かキーを押して終了してください..." -ForegroundColor White
$null = $Host.UI.RawUI.ReadKey("NoEcho,IncludeKeyDown")

GitHubにも置いてます。
https://github.com/ya-ma-n-1972/powershell_tool_report/blob/main/clear_sharepoint_webdav_cache.ps1


SharePointOnlineでのWebDAV接続問題は、クラウドサービスへの移行期に新旧のシステム構成を混合させた運用で起こる構造的問題でしょう。あまりそのような状況を起こすことは無いように思いますが、一つの現場レベルでの解決策と言うことで。


参考資料

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?