![如何在 Win 7 + 上通过脚本设置给定文件的“经过身份验证的用户”权限](https://linux22.com/image/1557117/%E5%A6%82%E4%BD%95%E5%9C%A8%20Win%207%20%2B%20%E4%B8%8A%E9%80%9A%E8%BF%87%E8%84%9A%E6%9C%AC%E8%AE%BE%E7%BD%AE%E7%BB%99%E5%AE%9A%E6%96%87%E4%BB%B6%E7%9A%84%E2%80%9C%E7%BB%8F%E8%BF%87%E8%BA%AB%E4%BB%BD%E9%AA%8C%E8%AF%81%E7%9A%84%E7%94%A8%E6%88%B7%E2%80%9D%E6%9D%83%E9%99%90.png)
我有这个脚本文件,它目前正在将可执行文件的“经过身份验证的用户”权限设置为“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 的原始安装
- 它必须以非交互方式运行 - 因为它是无人值守安装脚本的一部分