На самом деле, я установил Windows 7 на свой старый компьютер с XP, и, поскольку я перешел на x64 и использовал x32, пути обновления не было.
Я использовал инструмент миграции пользовательской среды (USMT) для перемещения большого количества вещей, и для того, что он перемещал, он исправил ACL файлов / каталогов, но не все. Немало данных просто осталось на диске.
Все эти оставшиеся данные имеют списки управления доступом, относящиеся к системе XP. В частности, большинство файлов принадлежит основной учетной записи пользователя старой системы.
Итак, как я могу заменить один SID в ACL на новый, переназначив все разрешения старого пользователя новому пользователю?
я использовал icacls <path>\* /save aclfile /t
для создания резервной копии всех разрешений. Пришлось запускать от имени администратора, иначе icacls не смог прочитать ACL, чтобы сохранить их.
Изначально я хотел использовать: icacls /restore aclfile /substitute <oldsid> <newsid>
, но это не сработает, потому что он не может определить имя пользователя для oldsid.
Так что я просто использовал текстовый редактор, и методом перебора заменил все ссылки на в aclfile на
Затем использовали iacls <path> /restore aclfile
чтобы вернуть новые разрешения.