當共享資料夾所在的硬碟移至另一台電腦,或系統重裝後,原本的共享權限會因 SID(安全性識別碼)不符而失效,導致網路上其他電腦無法存取。Windows 7 可用 takeown / icacls 指令修復,但 Windows 8 消費者預覽版移除了 takeown。本文說明替代方案。
NTFS 權限綁定使用者 SID。跨電腦或重裝系統後,原擁有者 SID 不存在於新系統,導致「存取被拒」。
takeown /f "D:\SharedFolder" /r /d y
icacls "D:\SharedFolder" /grant "UserName":(CI)(OI)F /t
/r 遞迴子目錄,/d y 自動回答「是」。(CI)(OI)F 代表容器繼承、物件繼承、完全控制。
以系統管理員身分開啟 PowerShell:
# 取得擁有權
takeown /f "D:\SharedFolder" /r /d y
# 或 PowerShell 原生指令
Get-ChildItem "D:\SharedFolder" -Recurse | ForEach-Object { $_.SetAccessControl((Get-Acl $_).SetOwner([System.Security.Principal.NTAccount]"CurrentUser")) }
# 授予完全控制
icacls "D:\SharedFolder" /grant "CurrentUser":(OI)(CI)F /t
注意:Windows 8 正式版已恢復 takeown.exe,上述指令可直接使用。若遇指令不存在,請改用 GUI 或 PowerShell 方式。
