DetailPage-MSS-KB

Base de connaissances

Numéro d'article: 263324 - Dernière mise à jour: mardi 31 octobre 2006 - Version: 3.3

 

Sommaire

Symptômes

Lorsque vous créez des raccourcis et que vous spécifiez un nom de fichier long dans le chemin cible, le chemin d'accès est tronqué si le disque dur pour la cible n'existe pas. Par exemple, créer un raccourci avec la cible suivante :

J:\Mydirectory\Myapplication.exe

Si le lecteur J n'existe pas, le chemin d'accès est tronqué à :

J:\Mydirect\Mypplica.exe

Cause

Ce problème peut se produire car le shell ne peut pas déterminer si le disque dur prend en charge les noms de fichiers longs, afin que le chemin d'accès est tronqué à être accepté par tous les systèmes de fichiers.

Statut

Microsoft a confirmé l'existence de ce problème dans les produits Microsoft répertoriés au début de cet article.

Plus d'informations

Ce problème peut être observé lorsque vous utilisez une des méthodes suivantes pour créer des raccourcis :
  • Systems Management Server (SMS) installer créer Une méthode de raccourci
  • Le code VBScript Create, méthode de raccourci
  • La méthode d'interface IShellLink

Le programme d'installation de SMS Create, méthode de raccourci


Un extrait à partir d'un fichier de .ipf SMS Installer qui illustre le problème :
item: Create Shortcut
  Source English=X:\Pw32\Alongdirectory\Blongdirectory\Longfilename.exe
  Destination English=C:\Winnt\Shortcut123.lnk
  Key Type English=1536
  Flags=00000001
end
				
si vous compilez un script avec cet extrait et que vous l'exécutez après avoir vérifié que le lecteur X n'existe pas, vous pouvez observer que le raccourci est créé, mais le chemin cible est tronqué à :

X:\Pw32\Alongdir\Blongdir\Longfile.exe

Si vous connectez le lecteur X à un partage ou si vous utilisez une commande subst pour pointer vers un lecteur local et vous exécutez à nouveau le script, le raccourci est créé avec le chemin d'accès cible correct :

X:\Pw32\Alongdirectory\Blongdirectory\Longfilename.exe

Ce problème n'est pas provoqué par le programme d'installation de SMS. Ce problème se produit parce que l'installateur SMS utilise l'interface IShellLink (reportez-vous à «The IShellLink interface méthode») pour créer des raccourcis. Le programme d'installation de SMS passe le nom de chemin d'accès complet correct à l'interface IShellLink, mais le chemin d'accès est tronqué lors de l'opération de IShellLink::SetPath.

La méthode VBScript créer un raccourci

Un exemple VBScript illustre le problème :
set WshShell = WScript.CreateObject("WScript.Shell")
set oShellLink = WshShell.CreateShortcut("d:\" & "\Long filename Shortcut .lnk")
oShellLink.TargetPath = "j:\my long directory\myapplication.exe"
oShellLink.WindowStyle = 1
oShellLink.Hotkey = "CTRL+SHIFT+F"
oShellLink.Description = "Long Filename Shortcut"
oShellLink.Save
				
lorsque vous exécutez ce script et le lecteur J n'existe pas, vous pouvez observer le raccourci créé, mais le chemin cible est :

J:\My_long_\Myapplic.exe

Remarque : les caractères ne sont normalement pas pris en charge par les systèmes de fichiers ne souhaitez pas que les noms de fichier longs, tels que le caractère espace, sont remplacés par le symbole de trait de soulignement «_».

Pour contourner ce problème, vous pouvez utiliser la commande subst pour pointer le lecteur J vers un disque dur local :
set WshShell = WScript.CreateObject("WScript.Shell")
Dim ret
'subst a drive to make the mapping work
ret = WshShell.Run ("cmd /c subst j: c:\", 0, TRUE)
set oShellLink = WshShell.CreateShortcut("d:\" & "\Long filename Shortcut .lnk")
oShellLink.TargetPath = "j:\my long directory\myapplication.exe"
oShellLink.WindowStyle = 1
oShellLink.Hotkey = "CTRL+SHIFT+F"
oShellLink.Description = "Long Filename Shortcut"
oShellLink.Save
'remove the subst
ret = WshShell.Run ("cmd /c subst j: /d", 0, TRUE)
				
cette commande points le lecteur J au lecteur c. Si le lecteur C prend en charge les noms de fichier longs, la commande crée un raccourci à l'aide du chemin d'accès cible suivant :

Directory\Myapplication.exe long J:\My

Vous pouvez également utiliser WshNetwork.MapNetworkDrive connecter lecteur J à un partage connu, créer le raccourci comme indiqué dans les étapes précédentes et puis supprimez le lecteur J à l'aide de WshNetwork.RemoveNetworkDrive.

La méthode d'interface IShellLink

Un extrait de code qui illustre le problème à l'aide de l'interface IShellLink dans Microsoft Visual C++:
HRESULT hres; 

IShellLink* psl; 
 
    // Get a pointer to the IShellLink interface. 
    hres = CoCreateInstance(CLSID_ShellLink, NULL, 
        CLSCTX_INPROC_SERVER, IID_IShellLink, (LPVOID *) &psl); 
    if (SUCCEEDED(hres)) { 
        IPersistFile* ppf; 
 
        // Set the path to the shortcut target and add the 
        // description. 
        hres = psl->SetPath("X:\\azertyuiop\\azertyuiop.exe");
				
vous devez utiliser IPersistFile::Save pour écrire le raccourci sur le disque. Cette action génère un chemin d'accès cible :

X:\Azertyui\Azertyui.exe

Ce problème se produit sur toutes les versions de Windows NT 4.0 et Windows 2000.

Les informations contenues dans cet article s'appliquent au(x) produit(s) suivant(s):
  • Microsoft Windows 2000 Professionnel
  • Microsoft Systems Management Server 1.0 Standard Edition
  • Microsoft Systems Management Server Installer 2.0
  • Microsoft Windows NT Workstation 4.0 Édition Développeur
  • Microsoft Windows XP Édition familiale
  • Microsoft Windows XP Professional
Mots-clés : 
kbmt kbnofix kbprb kbsms200presp3 kbui KB263324 KbMtfr
Traduction automatiqueTraduction automatique
IMPORTANT : Cet article est issu du système de traduction automatique mis au point par Microsoft (http://support.microsoft.com/gp/mtdetails). Un certain nombre d’articles obtenus par traduction automatique sont en effet mis à votre disposition en complément des articles traduits en langue française par des traducteurs professionnels. Cela vous permet d’avoir accès, dans votre propre langue, à l’ensemble des articles de la base de connaissances rédigés originellement en langue anglaise. Les articles traduits automatiquement ne sont pas toujours parfaits et peuvent comporter des erreurs de vocabulaire, de syntaxe ou de grammaire (probablement semblables aux erreurs que ferait une personne étrangère s’exprimant dans votre langue !). Néanmoins, mis à part ces imperfections, ces articles devraient suffire à vous orienter et à vous aider à résoudre votre problème. Microsoft s’efforce aussi continuellement de faire évoluer son système de traduction automatique.
La version anglaise de cet article est la suivante: 263324  (http://support.microsoft.com/kb/263324/en-us/ )
L'INFORMATION CONTENUE DANS CE DOCUMENT EST FOURNIE PAR MICROSOFT SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE. L'UTILISATEUR ASSUME LE RISQUE DE L'UTILISATION DU CONTENU DE CE DOCUMENT. CE DOCUMENT NE PEUT ETRE REVENDU OU CEDE EN ECHANGE D'UN QUELCONQUE PROFIT.
Partager
Options de support supplémentaire
Forums du support Microsoft Community
Nous contacter directement
Trouver un partenaire Microsoft Certified Partner
Microsoft Store