You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

迁移至OneDrive Redirect后,用PowerShell修改MRU二进制文件路径

用PowerShell修改资源管理器MRU列表的二进制路径(Folder Redirection → OneDrive Redirect迁移场景)

资源管理器RecentDocs注册表项中存储的MRU路径采用**UTF-16LE(Unicode)**编码的二进制格式,每个路径以空字符(\0)分隔。PowerShell完全支持将其转换为可读字符串、修改后再转回二进制,具体步骤如下:

1. 读取注册表中的二进制MRU数据

定位到目标注册表路径,读取对应二进制值(默认值为*,针对特定文件类型的MRU可替换为扩展名,如.docx):

# 目标注册表路径
$mruRegPath = "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\RecentDocs"
# 读取默认MRU二进制数据(如果是特定文件类型,将'*'改为对应扩展名,比如'docx')
$binaryMruData = (Get-ItemProperty -Path $mruRegPath).'*'

2. 将二进制数据转换为可读路径列表

通过UTF-16LE编码解析二进制数据,再按空字符分割得到独立的路径:

# 解析二进制为字符串,分割成单个路径并过滤空条目
$mruPaths = [System.Text.Encoding]::Unicode.GetString($binaryMruData) -split "`0" | Where-Object { $_ -ne "" }

3. 替换旧路径前缀为OneDrive新路径

根据迁移场景,把Folder Redirection的旧路径前缀替换为OneDrive Redirect的新前缀(用[regex]::Escape处理路径中的特殊字符,避免正则匹配出错):

# 定义旧路径前缀和新路径前缀
$oldFolderRedirectPath = "\\your-old-server\user-profiles\$env:USERNAME\Documents"
$newOneDrivePath = "$env:USERPROFILE\OneDrive - YourCompanyName\Documents"

# 批量替换路径
$updatedPaths = $mruPaths | ForEach-Object {
    $_ -replace [regex]::Escape($oldFolderRedirectPath), $newOneDrivePath
}

可选:如果想过滤掉已失效的旧路径,可在替换前添加Where-Object { Test-Path $_ }。

4. 将修改后的路径转回二进制格式

把更新后的路径用空字符连接,再转换回UTF-16LE二进制(末尾需额外添加一个空字符保持原始格式):

$updatedBinaryData = [System.Text.Encoding]::Unicode.GetBytes(($updatedPaths -join "`0") + "`0")

5. 写回注册表并重启资源管理器

将修改后的二进制数据写回注册表,重启资源管理器使更改生效:

# 写回注册表(同样,若为特定文件类型,将'*'改为对应扩展名)
Set-ItemProperty -Path $mruRegPath -Name '*' -Value $updatedBinaryData

# 重启资源管理器
Stop-Process -Name explorer -Force
Start-Process explorer

注意事项

  • 操作前建议备份注册表分支:Export-ItemProperty -Path $mruRegPath -LiteralPath "C:\temp\RecentDocs_Backup.reg"
  • 若用户的OneDrive路径包含特殊字符(如空格、连字符),确保变量定义正确
  • 部分旧MRU条目可能指向已删除的文件,可根据需求决定是否保留

内容的提问来源于stack exchange,提问作者Joe Stellato

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 01:10:29