3 votes

Problème bizarre d'icône de raccourci avec le double démarrage de XP-7

Je fais un double démarrage de Windows XP et Windows 7 et j'ai rencontré un problème particulier avec les icônes de raccourcis.

Un bureau différent est utilisé pour chaque système d'exploitation, de sorte que j'ai un raccourci vers l'autre sur chacun d'eux pour un accès facile aux deux à partir de n'importe quelle version de Windows ; c'est-à-dire que dans XP, le bureau contient un raccourci appelé 7Desk et dans 7, le bureau contient un raccourci appelé XPDesk . Plus loin, 7Desk.lnk est configuré pour utiliser la ressource d'icône de bureau de shell32.dll de Windows 7, et XPDesk.lnk est configuré pour utiliser la ressource d'icône de bureau de shell32.dll de Windows XP. De cette façon, chaque raccourci affiche l'icône de l'autre système d'exploitation sur le bureau.

Le problème est que, même si dans le Changer l'icône Je peux voir les icônes correctes (pour l'autre système d'exploitation), mais lorsque je clique sur OK, l'icône affiche l'icône correspondante du système d'exploitation. Système d'exploitation actuellement démarré au lieu de l'autre. J'ai confirmé que cela se produit également pour d'autres ressources d'icônes, comme les icônes de la corbeille.

C'est déconcertant parce qu'en ce qui concerne Windows (et l'application Changer l'icône ) sont concernés, shell32.dll de l'autre disque est juste un fichier contenant des icônes. Il n'y a aucune raison pour qu'il traite la DLL de manière spéciale, et ce qui est encore plus mystérieux, c'est comment il sait lequel de ses fichiers DLL est le plus important. propre icônes à utiliser à sa place. En d'autres termes, comment XP peut-il savoir qu'il faut utiliser l'icône du bureau XP à la place de l'icône du bureau 7, ou comment 7 peut-il savoir qu'il faut utiliser l'icône de la corbeille 7 à la place de l'icône de la corbeille XP ? Et pour rendre les choses encore plus déroutantes, j'ai vérifié les fichiers LNK dans un éditeur hexadécimal et je peux clairement voir que la ressource de l'icône pointe effectivement vers le fichier sur l'autre disque, no simplement pour \windows\system32\shell32.dll .

(Il est vrai que les index d'icônes sont les mêmes, donc peut-être utilise-t-il simplement sa propre copie de shell32.dll au lieu de celui spécifié sur un autre disque, mais ensuite, pourquoi fait-il cela ? ? S'agit-il d'une sorte d'"IA" dans les Boîte de dialogue de modification fonction, essayant de faire ce qu'il pense que nous voulons au lieu de faire ce que nous disons ?)

Je peux enregistrer une capture d'écran si le problème n'est pas clair.

3voto

moswald Points 4521

Il est possible que Windows utilise LoadLibrary pour charger la DLL avec les icônes. Lorsque LoadLibrary voit qu'une DLL est chargée, il utilise celle qui est déjà chargée ; la vérification est basée sur le nom de la DLL et non sur son emplacement.

Si tel est le cas, une solution de contournement consiste à créer des copies des deux bibliothèques shell32.dll avec des noms différents (par exemple, shell32-xp.dll et shell32-7.dll), puis à modifier les icônes pour qu'elles fassent référence à ces fichiers.

0voto

FacePalm Points 101

Pour contourner la partie copie, vous pouvez les relier en dur, chacun sur son propre disque. C'est en tout cas ce que j'ai fait. Et il n'y a plus de problème pour avoir plusieurs copies de chaque fichier.

fsutil hardlink create \WINDOWS\system32\shell32_xp.dll \WINDOWS\system32\shell32.dll

Celui-ci est du côté de XP. Du côté de Windows 7, vous remplacez la partie _xp par _7 :)

EDIT : J'ai vu que celui du côté de Windows 7 ne fonctionne pas. A moins de casser les permissions (avec le risque de tout casser dans le système), vous ne devriez le faire que du côté XP.

Si vous voulez quand même le faire, vous devez prendre la propriété du fichier et changer les permissions, mais attention encore une fois !

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X