Как установить разрешения «Прошедших проверку пользователей» для определенного файла с помощью скрипта на Win 7 +

Как установить разрешения «Прошедших проверку пользователей» для определенного файла с помощью скрипта на Win 7 +

У меня есть этот файл скрипта, который в настоящее время устанавливает разрешения «Прошедшие проверку пользователи» для исполняемого файла на «Чтение и выполнение» — он отлично работает в 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
  • Он должен работать неинтерактивно, так как является частью сценария автоматической установки.

Связанный контент