
Eu tenho este arquivo de script que está atualmente definindo as permissões de 'Usuários autenticados' para um executável como 'ReadAndExecute' - funciona bem no Windows 10, mas precisa funcionar no Windows 7 - e não é:
$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;
Isso é executado, mas não define as permissões para usuários autenticados, se eu alterar a GetAccessControl
chamada para não ter o 'Access'
parâmetro, no Win7 recebo este erro:
The security identifier is not allowed to be the owner of this object.
Existe alguma maneira de conseguir o que estou tentando fazer?
Requisitos extras:
- Não consigo instalar outro aplicativo na máquina, considere uma instalação básica do Win 7
- Ele deve ser executado de forma não interativa - pois faz parte de um script de instalação autônoma