У меня есть этот файл сценария, который в настоящее время выполняет установку разрешений «Аутентифицированные пользователи» для исполняемого файла на «ReadAndExecute» - он отлично работает в Windows 10, но он должен работать в Windows 7 - и это не так:
$file = (Resolve-Path 'c:\Dir\file.exe').Path;
$acl = (Get-Item $file).GetAccessControl('Access');
acl.SetAccessRuleProtection($True, $True);
$ar = New-Object System.Security.AccessControl.FileSystemAccessRule('Authenticated Users', 'Write', 'None', 'None', 'Allow');
$acl.RemoveAccessRuleAll($ar);
$ar = New-Object System.Security.AccessControl.FileSystemAccessRule('Authenticated Users', 'Modify', 'None', 'None', 'Allow');
$acl.RemoveAccessRuleAll($ar);
$ar = New-Object System.Security.AccessControl.FileSystemAccessRule('Authenticated Users', 'ReadAndExecute', 'None', 'None', 'Allow');
$acl.SetAccessRule($ar);
Set-ACL -Path $file -AclObject $acl;
Это работает, но не устанавливает разрешения для аутентифицированных пользователей, если я изменяю вызов GetAccessControl
чтобы не иметь параметра 'Access'
, на Win7 я получаю эту ошибку:
The security identifier is not allowed to be the owner of this object.
Есть ли способ добиться того, что я пытаюсь сделать?
Дополнительные требования:
- Я не могу установить другое приложение на машине, считайте, что это ванильная установка Win 7
- Он должен работать не в интерактивном режиме - как часть сценария автоматической установки