Aktualisiertes Skript. Geprüftes Funktionieren und kein Dialogfeld mit Berechtigungen.
Es ist nicht möglich zu verhindern, dass Windows die Datei desktop.ini erstellt, da dies nicht von Windows ausgeführt wird. Ein anderer Dienst von Drittanbietern löst die Erstellung dieser Datei aus, und Windows lässt dies trotz UseDesktopIniCache = 0 zu.
Desktop.ini hat mich in den Wahnsinn getrieben, also habe ich eine Ragtag-Lösung gefunden. Ich habe festgestellt, dass die Datei desktop.ini einige Sekunden nach dem Start erstellt wird. Ich habe das ausgenutzt. Mit dem Taskplaner deaktiviere ich vorübergehend die Schreibberechtigung auf dem Desktop beim Start. Dadurch werden Dienste von Drittanbietern daran gehindert, mit meinem Desktop Spielereien auszuführen. Eine Minute nach dem Start stellt eine andere Task die Schreibberechtigung auf dem Desktop wieder her.
Hier habe ich eine Reihe von XML-Beispieldateien für den Taskplaner freigegeben, um die Aufgabe zu erledigen.
Diese Version des Skripts deaktiviert die Vererbung
Ich fand die Vererbung zu verwirrend und habe sie daher für den Desktop-Ordner deaktiviert. Sie könnten / inheritance hinzufügen: e irgendwo im zweiten Skript, wenn Sie es wirklich brauchen, aber beachten Sie, dass das Deaktivieren der Vererbung einen verlustbehafteten Prozess darstellt, weshalb das Hinzufügen dieser Zeile nicht alles dahin zurückverändert, wo sie vorher waren. Der Desktop ist kein Systemordner, daher sollte er Sie auch nicht beeinträchtigen.
Dieser dient zum Deaktivieren der Schreibberechtigung beim Booten:
<?xml version="1.0" encoding="UTF-16"?>
<Task version="1.4" xmlns="http://schemas.microsoft.com/windows/2004/02/mit/task">
<RegistrationInfo>
<Date>2018-01-09T18:21:14.9818893</Date>
<Author>spero_LAPTOP\spero</Author>
<URI>\Desktop Write Permission disable</URI>
</RegistrationInfo>
<Triggers>
<LogonTrigger>
<ExecutionTimeLimit>PT1M</ExecutionTimeLimit>
<Enabled>true</Enabled>
</LogonTrigger>
</Triggers>
<Principals>
<Principal id="Author">
<UserId>##################################</UserId>
<LogonType>Password</LogonType>
<RunLevel>HighestAvailable</RunLevel>
</Principal>
</Principals>
<Settings>
<MultipleInstancesPolicy>IgnoreNew</MultipleInstancesPolicy>
<DisallowStartIfOnBatteries>false</DisallowStartIfOnBatteries>
<StopIfGoingOnBatteries>true</StopIfGoingOnBatteries>
<AllowHardTerminate>true</AllowHardTerminate>
<StartWhenAvailable>false</StartWhenAvailable>
<RunOnlyIfNetworkAvailable>false</RunOnlyIfNetworkAvailable>
<IdleSettings>
<StopOnIdleEnd>true</StopOnIdleEnd>
<RestartOnIdle>false</RestartOnIdle>
</IdleSettings>
<AllowStartOnDemand>true</AllowStartOnDemand>
<Enabled>true</Enabled>
<Hidden>true</Hidden>
<RunOnlyIfIdle>false</RunOnlyIfIdle>
<DisallowStartOnRemoteAppSession>false</DisallowStartOnRemoteAppSession>
<UseUnifiedSchedulingEngine>true</UseUnifiedSchedulingEngine>
<WakeToRun>false</WakeToRun>
<ExecutionTimeLimit>PT1M</ExecutionTimeLimit>
<Priority>7</Priority>
</Settings>
<Actions Context="Author">
<Exec>
<Command>ICACLS</Command>
<Arguments>"C:\Users\spero\Desktop" /inheritance:d /remove "SYSTEM"</Arguments>
</Exec>
<Exec>
<Command>ICACLS</Command>
<Arguments>"C:\Users\spero\Desktop" /remove "Administrators"</Arguments>
</Exec>
<Exec>
<Command>ICACLS</Command>
<Arguments>"C:\Users\spero\Desktop" /remove "spero"</Arguments>
</Exec>
<Exec>
<Command>ICACLS</Command>
<Arguments>"C:\Users\spero\Desktop" /grant "Administrators":(OI)(GR)</Arguments>
</Exec>
<Exec>
<Command>ICACLS</Command>
<Arguments>"C:\Users\spero\Desktop" /grant "spero":(OI)(GR)</Arguments>
</Exec>
</Actions>
</Task>
Dieser dient dazu, die Erlaubnis eine Minute später wieder herzustellen:
<?xml version="1.0" encoding="UTF-16"?>
<Task version="1.4" xmlns="http://schemas.microsoft.com/windows/2004/02/mit/task">
<RegistrationInfo>
<Date>2018-01-09T18:19:03.2968461</Date>
<Author>spero_LAPTOP\spero</Author>
<URI>\Desktop Write Permission</URI>
</RegistrationInfo>
<Triggers>
<LogonTrigger>
<ExecutionTimeLimit>PT1M</ExecutionTimeLimit>
<Enabled>true</Enabled>
<Delay>PT1M</Delay>
</LogonTrigger>
</Triggers>
<Principals>
<Principal id="Author">
<UserId>######################################</UserId>
<LogonType>Password</LogonType>
<RunLevel>HighestAvailable</RunLevel>
</Principal>
</Principals>
<Settings>
<MultipleInstancesPolicy>IgnoreNew</MultipleInstancesPolicy>
<DisallowStartIfOnBatteries>false</DisallowStartIfOnBatteries>
<StopIfGoingOnBatteries>true</StopIfGoingOnBatteries>
<AllowHardTerminate>true</AllowHardTerminate>
<StartWhenAvailable>false</StartWhenAvailable>
<RunOnlyIfNetworkAvailable>false</RunOnlyIfNetworkAvailable>
<IdleSettings>
<StopOnIdleEnd>true</StopOnIdleEnd>
<RestartOnIdle>false</RestartOnIdle>
</IdleSettings>
<AllowStartOnDemand>true</AllowStartOnDemand>
<Enabled>true</Enabled>
<Hidden>true</Hidden>
<RunOnlyIfIdle>false</RunOnlyIfIdle>
<DisallowStartOnRemoteAppSession>false</DisallowStartOnRemoteAppSession>
<UseUnifiedSchedulingEngine>true</UseUnifiedSchedulingEngine>
<WakeToRun>false</WakeToRun>
<ExecutionTimeLimit>PT1M</ExecutionTimeLimit>
<Priority>7</Priority>
</Settings>
<Actions Context="Author">
<Exec>
<Command>ICACLS</Command>
<Arguments>"C:\Users\spero\Desktop" /grant "Administrators":F</Arguments>
</Exec>
<Exec>
<Command>ICACLS</Command>
<Arguments>"C:\Users\spero\Desktop" /grant "spero":F</Arguments>
</Exec>
</Actions>
</Task>
Bitte beachten Sie, dass mein Boot-Laufwerk eine SSD ist, wenn auch keine sehr schnelle. Die Zeiten können variieren, je nachdem, wie schnell Ihr Betriebssystem startet.
Sie können diese Skripte auch nicht direkt importieren, da Autoren- und Benutzer-ID-Felder vorhanden sind. Notieren Sie sich einfach alle Parameter.
UseDesktopIniCache=0
(aus der Antwort unter superuser.com/a/650431/523828 ) nicht in Windows 10?