У мене є цей файл сценарію, який наразі встановлює дозволи "Аутентифікованих користувачів" для виконуваного файлу "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
- Він повинен працювати не в інтерактивному режимі - оскільки він є частиною автоматичного сценарію інсталяції
Чи намагалися ви скористатися командлетом Set-ACL?
—
EBGreen
@EBGreen - Ні, я цього не зробив
—
Chris Skardon
Хоча - я не впевнений, як використовувати його, щоб робити те, що я намагаюся зробити - з того, що я бачу, мені потрібно
—
Chris Skardon
AclObj
- і все, що знаходиться в середині, просто отримує Acl - остання лінія, де я називаю Set-ACL
- я повинен робити це іншим шляхом?