Поскольку вы используете локальные учетные записи, просто копирование ACL не будет работать, потому что идентификаторы SID будут разными на разных компьютерах.
Я хотел бы работать это в несколько шагов:
Первый: Получите SIDs счета (как на старых, так и новых машин). Самый быстрый способ использует PsGetSid (от PSTools)
PS G:\> psgetsid iusr_mymachine
PsGetSid v1.43 - Translates SIDs to names and vice versa
Copyright (C) 1999-2006 Mark Russinovich
Sysinternals - www.sysinternals.com
SID for MYMACHINE\iusr_mymachine:
S-1-5-21-3287596715-1315679848-4222504177-1004
Второй: Получить SDDL («Security Descriptor Definition Language», способ написания списков управления доступом в тексте, описанных на MSDN) файлов, которые вы хотите. Win32 и .NET есть методы, чтобы сделать это, но самый простой маршрут PowerShell (с добавлением разрывов строк, чтобы сделать структуру видимой):
PS E:\Dev\Sites> (get-acl .\WebSite).sddl
O:S-1-5-21-1527045006-1366868173-4125010901-1001
G:S-1-5-21-1527045006-1366868173-4125010901-513D:AI
(A;OICI;0x1200a9;;;NS)
(A;OICI;0x1200a9;;;S-1-5-21-1527045006-1366868173-4125010901-1012)
(A;ID;FA;;;S-1-5-21-1527045006-1366868173-4125010901-1001)
(A;OICIIOID;FA;;;CO)
(A;OICIID;FA;;;SY)
(A;OICIID;FA;;;BA)
(A;OICIIOID;FA;;;S-1-5-21-1527045006-1366868173-4125010901-1001)
Третьего: String замена может быть применена для каждой {старой машины SID, новая машина SID) в этой строке.
Четвертое: Установите новый ACL на папку (или файл):
$sec = get-acl newfolder
$sec.SetSecurityDescriptorSddlForm($sddl)
Очевидно, что лучший маршрут, чтобы сделать это для нескольких файлов в сценарий его, с помощью сценария на старой машине делает 1 & 2, и генерирует сценарий для выполнения 3 и 4 на конечном компьютере (чтобы избежать дистанционной настройки ACL с неизвестными идентификаторами безопасности).
+1, полезная утилита. Я просто хочу, чтобы приложение включило привилегию резервного копирования, чтобы я мог видеть профили пользователей. – avakar