web-dev-qa-db-fra.com

Désactiver la création de desktop.ini dans Windows 10 (sur le bureau)

Je souhaite que le fichier 'desktop.ini' soit créé sur le 'Bureau' de mon ordinateur Windows 10. J'ai posé cette question séparément à propos de Windows 10: Il y a une question sur le même problème sous Windows 8 ici , les solutions proposées ici (et ailleurs) pour Windows 7 et 8 ne semblent pas fonctionner.

S'il vous plaît, pas de solutions dans le sens de "désactiver l'affichage des fichiers cachés". Ma question spécifique est de savoir comment arrêter le fichier en cours de création sur le bureau.

20
Neil Townsend

(Beaucoup) Éditer plus tard: Il semble que cette solution ne fonctionne plus sous Windows10. Laissant la réponse ici pour référence.


J'ai utilisé la solution trouvée ici :

  • Appuyez sur Win+R et entrez regedit
  • Accédez à HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\Explorer
  • Editez/créez un nouveau DWORD: UseDesktopIniCache avec les données 0

Pour moi, je n'avais pas la valeur, donc je devais la créer. Après le redémarrage, il a automatiquement créé la valeur dans HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Policies\Explorer

Exécution de Windows 10 Build 14393.222

6
tlex

Script mis à jour. Travail vérifié et ne déclenche pas la boîte de dialogue d'autorisation.


Il n'est pas possible d'empêcher Windows de créer desktop.ini car ce n'est pas réellement Windows qui le fait. Un autre service tiers déclenche la création de ce fichier et, de toute évidence, Windows le permet malgré le fait que UseDesktopIniCache = 0.

Desktop.ini me rendait fou, alors je proposai une solution simpliste. J'ai observé que le fichier desktop.ini est créé quelques secondes après le démarrage. J'ai profité de ça. À l'aide du Planificateur de tâches, je désactive temporairement l'autorisation d'écriture sur le bureau au démarrage. Cela empêche les services tiers d'effectuer des manigances avec mon ordinateur de bureau. Ensuite, une minute après le démarrage, une autre tâche rétablit l'autorisation d'écriture sur le bureau.

Ici, j'ai partagé un ensemble d'exemples de fichiers XML pour que le planificateur de tâches puisse effectuer le travail.

Cette version du script désactive l'héritage

J'ai trouvé l'héritage trop déroutant, donc je l'ai désactivé pour le dossier Desktop. Vous pouvez ajouter/héritage: e quelque part dans le second script si vous en avez vraiment besoin, mais notez que la désactivation de l'héritage est un processus avec perte. L'ajout de cette ligne ne changera donc pas tout ce qu'il était auparavant. Desktop n'est pas un dossier système et ne devrait donc pas vous affecter.

Celui-ci sert à désactiver l'autorisation d'écriture au démarrage:

<?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>

Celui-ci est pour rétablir l'autorisation une minute plus tard:

<?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>

Veuillez noter que mon lecteur de démarrage est un SSD, bien que pas très rapide. Les horaires peuvent varier en fonction de la vitesse de démarrage de votre système d'exploitation.

En outre, vous ne pouvez pas importer ces scripts directement à cause de la présence des champs Auteur et ID utilisateur. Il suffit de prendre note de tous les paramètres.

1
Spero