Löschen oder Umbenennen von Dateien verhindern, jedoch Lese- und Ausführungszugriff zulassen
Versuchen Sie, icacls mit der folgenden Syntax mit der Datei zu vergleichen, die Sie sperren möchten, und mit dem Benutzernamen (oder dem Namen der Sicherheitsgruppe), für den sie gelten soll. Es gibt Kommentarnotizen in dem Skript über jedem angehängten Befehl, in dem :::
erläutert wird, was die ACL speziell für die Berechtigungen tut.
Sie sollten die ACL-Berechtigungen auf die ursprüngliche Einstellung zurücksetzen, bevor Sie Änderungen vornehmen, die Sie vor dem Ausführen vorgenommen haben. Vergewissern Sie sich anschließend, dass das Konto die Datei ausführen kann, und führen Sie anschließend das unten stehende Skript aus.
Im Wesentlichen wird dadurch die ACL-Vererbung an den Ordner, in dem sich die ausführbare Datei befindet, und die Datei selbst deaktiviert . Es gewährt dann dem Ordner und der ausführbaren Datei ein explizites Lesen und Ausführen . Um die Umbenennung der Datei zu verhindern, wird die Erstellung von Dateien / Schreibdaten in den Ordner, in dem sich die ausführbare Datei befindet, verhindert. Schließlich wird der Löschzugriff auf den Ordner und die ausführbare Datei explizit verweigert .
Skript
@ECHO ON SETLOCAL ENABLEDELAYEDEXPANSION SET "Exe=C:\Folder\Path\file.exe" SET "uAccount=Username" FOR %%a in ("%Exe%") DO SET "eFolder=%%~DPa" ::: This strips the last "\" from the folder the exe resides so icacls can process SET "eFolder=!eFolder:~0,-1!" ::: Disables ACL inheritence on the folder the exe file resides but copies all ACLs as inherited before removing ICACLS "!eFolder!" /inheritance:d /grant:r "%uAccount%:(OI)(IO)" /C ::: Remove all granted permission ACLs on only the folder the exe file resides ICACLS "!eFolder!" /remove:g "%uAccount%" /C ::: Remove all denied permission ACLs on only the folder the exe file resides ICACLS "!eFolder!" /remove:g "%uAccount%" /C ::: Grants explicit read and execute ACL access on only the folder the exe file resides ICACLS "!eFolder!" /grant:r "%uAccount%:(RX)" /C ::: Denies delete ACL access on only the folder the exe file resides ICACLS "!eFolder!" /deny "%uAccount%":(DE) ::: Denies create files / write data ACL access on only the folder the exe file resides ICACLS "!eFolder!" /deny "%uAccount%":(WD) ::: Disables ACL inheritence on the exe file only but copies all ACLs as inherited before removing ICACLS "%Exe%" /inheritance:d /grant:r "%uAccount%:(OI)(IO)" /C ::: Remove all granted permission ACLs on only the exe file ICACLS "%Exe%" /remove:g "%uAccount%" /C ::: Remove all denied permission ACLs on only the exe file ICACLS "%Exe%" /remove:g "%uAccount%" /C ::: Grants explicit read and execute ACL access only to the exe file ICACLS "%Exe%" /grant:r "%uAccount%:(RX)" /C ::: Grants an explicit deny of delete ACL access only to the exe file ICACLS "%Exe%" /deny "%uAccount%":(DE) PAUSE EXIT
Hinweis: Ändern Sie den Wert der
Exe=
Variablen in den vollständigen expliziten Pfad zu der ausführbaren Datei, die Sie sperren möchten, und den Wert deruAccount=
Variablen in den Benutzernamen (oder die Namen der Sicherheitsgruppen) des Kontos (oder der Gruppe), das Sie möchten dies muss durchgeführt werden.
GUI-ACL-Berechtigungsklärung
Ordner, in dem sich das Exe befindet