web-dev-qa-db-fra.com

Comment puis-je empêcher un raccourci Windows de mettre à jour son chemin?

Lors du développement de mon produit, plusieurs versions de l'application sont installées simultanément sur mon périphérique de test. Cependant, pour que les chemins absolus utilisés par mon application fonctionnent, je dois permuter ou renommer les dossiers afin que la version que je veux tester utilise le bon chemin, par exemple C:\Program Files\My Company\My App\My App.exe. J'ai créé un raccourci qui cible ce chemin, mais si ce raccourci est ouvert alors qu'aucune version ne possède actuellement ce chemin, il se mettra automatiquement à jour, pensant que le fichier a été déplacé de façon permanente. Cela a causé des échecs silencieux jusqu'à ce que je découvre ce qui se passait. Je ne savais pas que c'était une fonctionnalité des raccourcis Windows jusqu'à présent.

Donc ma question est simple. Est-il possible de désactiver cette fonctionnalité? Globalement, c'est bien, mais une solution par raccourci serait préférable.

Utiliser un fichier de commandes au lieu d’un raccourci est une solution, mais je me demande s’il est possible de faire en sorte que cela fonctionne tout en utilisant un raccourci.

J'utilise Windows 10 Home et Windows 7 Home.

24
Kyle Delaney

Vous pouvez utiliser PowerShell! Ce petit script force le fichier LNK à produire le même effet que l’utilitaire classique shortcut.

$linkfile = Resolve-Path $args[0]
$bytes = [IO.File]::ReadAllBytes($linkfile)
$bytes[0x16] = $bytes[0x16] -bor 0x36
[IO.File]::WriteAllBytes($linkfile, $bytes)

Pour l'utiliser, enregistrez ce texte sous forme de fichier .ps1, par exemple. notrack.ps1. Si ce n'est déjà fait, suivez les instructions de la section Enabling Scripts de le wiki de la balise PowerShell . Ensuite, vous pouvez l'exécuter à partir d'une invite PowerShell:

.\notrack.ps1 C:\path\to\my\shortcut.lnk

Les raccourcis ainsi modifiés ne changeront pas lorsque leur cible se déplacera. Si un raccourci comme celui-ci est brisé, rien ne se passera lorsque vous essayerez de l'ouvrir.

J'ai rassemblé les calculs binaires utilisés dans mon script à partir de ces 48 pages Microsoft PDF au format LNK .

13
Ben N

Arrêtez et désactivez le service TrkWks (Distributed Link Tracking Client).

Le suivi de lien distribué suit les liens dans des scénarios dans lesquels le lien est établi vers un fichier sur un volume NTFS, tel que des raccourcis Shell. Si ce fichier est renommé, déplacé vers un autre volume sur le même ordinateur, déplacé vers un autre ordinateur ou déplacé dans d'autres scénarios similaires, Windows utilise le Suivi de lien distribué pour rechercher le fichier.

Source: Suivi de lien distribué - Support Microsoft

24
Steven

Utilisez la commande shortcut.exe Option -s:

shortcut: [-? -h -f -c -r -s] [[-t] target [[-n] name]] [-d working directory]
        [-a Arguments] [-i Iconfile] [-x Icon index] [-u {all|[natdix]}]
        [-l logfile]

  -? -h        This help
  -f           Force overwrite of an existing short cut
  -c           Change existing shortcut
  -s           Make shortcut non tracking (Stupid)
  -r           Resolve broken shortcut
  -t target    Specifies the target of the shortcut
  -n name      Specifies the file name of the shortcut file
  -d directory Specifies the directory name to start the application in
  -a arguments Specifies the arguments passed when the shortcut is used
  -i iconfile  Specifiles the file the icon is in
  -x index     Specifies the index into the icon file
  -u [spec]    Dumps the contents of a shortcut. 'all' is the same as 'natdix'
               but the letters of 'natdix' can be specified to display specific
               fields in the shortcut (repeats allowed, and order followed)
  -l logfile   record error messages in specified file
8
Sunzi

Vous pouvez activer l'objet de stratégie de groupe suivant:

Configuration utilisateur\Modèles d'administration\Menu Démarrer et barre des tâches\N'utilisez pas la méthode basée sur la recherche lors de la résolution des raccourcis Shell

clé de registre correspondante: HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\NoResolveSearch

Configuration utilisateur\Modèles d'administration\Menu Démarrer et barre des tâches\N'utilisez pas la méthode basée sur le suivi lors de la résolution des raccourcis Shell

clé de registre correspondante:

HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\NoResolveTrack

Configuration utilisateur\Modèles d'administration\Composants Windows\Explorateur de fichiers\Ne pas suivre les raccourcis du shell en itinérance

clé de registre correspondante: HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\LinkResolveIgnoreLinkInfo

4
Swisstone