
Ich habe diese Skriptdatei, die derzeit die Berechtigungen „Authentifizierte Benutzer“ für eine ausführbare Datei auf „Lesen und Ausführen“ setzt – das funktioniert unter Windows 10 einwandfrei, muss aber unter Windows 7 funktionieren – und das tut es nicht:
$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;
Dies wird ausgeführt, legt jedoch nicht die Berechtigungen für authentifizierte Benutzer fest. Wenn ich den GetAccessControl
Aufruf so ändere, dass der 'Access'
Parameter nicht vorhanden ist, erhalte ich unter Win7 diesen Fehler:
The security identifier is not allowed to be the owner of this object.
Gibt es eine Möglichkeit, mein Ziel zu erreichen?
Zusätzliche Anforderungen:
- Ich kann keine andere App auf dem Computer installieren, betrachte es als eine Standardinstallation von Win 7
- Es muss nicht-interaktiv ausgeführt werden - da es Teil eines unbeaufsichtigten Installationsskripts ist