Quelle est la différence entre les répertoires AppData Roaming, Local et LocalLow pour dans Windows 10 ?


Il existe de nombreuses spéculations à ce sujet. Selon le propre tweet de Microsoft, c'est parce que "7 ate 9" (vous comprenez ? 8 se prononce comme ate), mais l'opinion la plus populaire semble être que Microsoft a essayé d'éviter de rompre la compatibilité avec certaines applications plus anciennes.

Voyez, certaines applications ont un comportement différent programmé pour les différentes versions de Windows. Par exemple, une application peut s'appuyer sur la fonctionnalité "gadgets" de Windows Vista/7, mais si vous exécutez la même application sous Windows 10, cette fonctionnalité n'est plus prise en charge, de sorte que cette partie de l'application ne fonctionnera pas. Et si elle utilise ce mécanisme de "gadgets" comme interface utilisateur principale ? Elle ne fonctionnera tout simplement pas sous Windows 10, car l'utilisateur n'aura aucun moyen d'interagir avec elle. Ainsi, certains développeurs pourraient décider de créer une nouvelle interface utilisateur pour Windows 10, peut-être quelque chose qui ressemble aux menus natifs de Windows 10 et se fond dans le système d'exploitation. Mais ils veulent conserver l'ancienne interface utilisateur de Windows Vista/7, car elle correspond mieux au style du système d'exploitation. So they will put a conditional statement in the program, which looks something like this:

  1. if(WindowsVersion == “Windows 7”) 
  2. // use old UI 
  3. else 
  4. // use new UI 

For non-programmers, this might look weird. Mais fondamentalement, si l'application fonctionne sous Windows 7, elle utilisera l'ancienne interface utilisateur (qui est incompatible avec Windows 10), sinon elle utilisera la nouvelle interface utilisateur. Dans un scénario réel, ce serait un peu plus compliqué, mais je pense que vous comprenez ce que je veux dire.

Mais attendez, qu'est-ce que cela a à voir avec Windows 9 ?


Je sais, je sais, désolé pour cette longue introduction. Mais il fallait que je vous donne un peu de contexte pour ce que je vais écrire ci-dessous.

Retournons à l'époque de Windows XP. Oubliez les Windows Vista, 7, 8 et 10, ils n'ont pas encore été annoncés et personne ne sait comment ils s'appelleront.

Maintenant, réfléchissons à la façon dont Microsoft nomme ses versions de Windows : au début, c'était la vieille école, des numéros de version réguliers : 1.0, 1.1, 2.0, 3.0, 3.1, NT4.0, et ainsi de suite. Puis ils sont passés aux numéros d'année : Windows 95 sorti en 1995, Windows 98 sorti en 1998, Windows 2000 sorti en 2000... et encore une fois, ils l'ont changé en lettres apparemment aléatoires : Windows XP ? Quoi que cela veuille dire...

Bien, de toute façon, ils ne reviendront probablement pas au nommage par dates, et même s'ils le font, nous sommes maintenant au 21ème siècle et l'année ne commencera pas par 9 de sitôt. Nous pensons qu'ils en ont déjà fini avec les numéros de version, également. Cela fait un moment qu'ils n'ont pas publié de version de Windows nommée avec un numéro de version.

Alors, naturellement, les développeurs ont commencé à utiliser ceci :

  1. if(WindowsVersion.StartsWith("Windows 9")). 
  2. ... 

Vous voyez ? Si ça commence par Windows 9... ça veut dire que c'est soit Windows 98, soit Windows 95. C'est très pratique, car ces versions sont assez similaires et ce sont probablement les plus anciennes qui nous intéressent (à l'époque, personne ne tentait même de rendre son application compatible avec une version de Windows vieille de 10 ans, car les ordinateurs et les logiciels évoluaient trop vite).

Voyez-vous ce qui s'en vient ? Oh oui. Windows 9. Maintenant, imaginez, si vous lancez une application qui a été initialement développée pour Windows XP et qui contient l'extrait de code ci-dessus (ou similaire). Il regarde autour de lui, vérifie la version de Windows... "Windows 9". Elle commence par Windows 9, donc il s'agit manifestement d'une ancienne version ! Cette application commence à essayer d'utiliser une vieille fonctionnalité de Windows (ou même DOS), et se plante. Ou bien elle essaie d'éviter d'utiliser toute fonctionnalité "moderne" de Windows, donc elle fonctionne très lentement, n'est pas belle, etc. Vous ne voulez absolument pas cela.

Maintenant, les développeurs pourraient mettre à jour l'application et résoudre ce problème assez facilement. Mais la vérité est que le support des applications ne dure pas une éternité. Après un certain temps, les développeurs passent à d'autres projets, prennent leur retraite, voire meurent 🙁 Il existe donc de nombreuses applications abandonnées que personne ne met à jour. Mais les gens les utilisent toujours, car elles peuvent encore être très utiles.

P.S. Je sais qu'il existe de meilleures façons de vérifier la version de Windows que de comparer leur nom de marque. Par exemple, Windows 7 avait un numéro de version de 6,1, Windows 8 avait 6,2 et ainsi de suite. Mais la triste vérité est que de nombreux développeurs ont utilisé des techniques comme celles décrites ci-dessus simplement parce que c'était plus pratique pour eux. Tous les développeurs ne suivent pas toujours les meilleures pratiques de codage.