El comando Crear acceso directo trunca los nombres de carpeta de origen de ruta de acceso a ocho caracteres

Seleccione idioma Seleccione idioma
Id. de artículo: 263324 - Ver los productos a los que se aplica este artículo
Expandir todo | Contraer todo

En esta página

Síntomas

Cuando crear accesos directos y especifique un nombre de archivo largos en la ruta de acceso de destino, la ruta de acceso se trunca si el disco duro para el destino no existe. Por ejemplo, crear un acceso directo con el siguiente destino:

J:\Mydirectory\Myapplication.exe

Si no existe la unidad J, se trunca la ruta de acceso:

J:\Mydirect\Mypplica.exe

Causa

Este problema puede ocurrir porque el shell no puede determinar si el disco duro admite nombres largos de archivo, por lo que la ruta de acceso se trunca a ser aceptable para todos los sistemas de archivo.

Estado

Microsoft ha confirmado que se trata de un problema de los productos de Microsoft enumerados en la sección "La información de este artículo se refiere a:" de este artículo.

Más información

Este problema puede ser observado cuando utilice cualquiera de los métodos siguientes para crear accesos directos:
  • Crear el instalador de Systems Management Server (SMS) método de acceso directo
  • El código VBScript Crear método de acceso directo
  • El método de interfaz IShellLink

SMS Installer Crear método de acceso directo


Un extracto de un archivo .ipf de SMS Installer que se muestra el problema:
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 se compila una secuencia de comandos con esta extracción y ejecutarla después asegurado de que la unidad X no existe, puede observar que creó el acceso directo, pero la ruta de acceso de destino se trunca a:

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

Si conecta la unidad X con un recurso compartido o utilizar un comando subst para señalar a una unidad local y volver a ejecutar la secuencia de comandos, el acceso directo se crea con la ruta de destino correcto:

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

Este problema no está causado por SMS Installer. Este problema se produce porque el instalador de SMS utiliza la interfaz IShellLink (consulte "El método de interfaz de IShellLink") para crear accesos directos. SMS Installer pasa el nombre de ruta de acceso correcta completa a la interfaz IShellLink, pero la ruta de acceso se trunca cuando se realiza la operación IShellLink::SetPath.

El método VBScript crear acceso directo

Un ejemplo de VBScript que demuestra el problema:
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
				
al ejecutar esta secuencia de comandos y la unidad J no existe, puede observar el acceso directo creado, pero la ruta de acceso de destino es:

J:\My_long_\Myapplic.exe

Nota : los caracteres que normalmente no se admiten los sistemas de archivo que no desea nombres largos de archivo, como el carácter de espacio, se reemplazan por el símbolo de subrayado "_".

Para evitar este problema, puede utilizar el comando subst para seleccione la unidad J en un disco duro 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)
				
este comando puntos unidad J en la unidad C. Si la unidad C admite nombres largos de archivo, el comando crea un acceso directo con la siguiente ruta de destino:

J:\My directory\Myapplication.exe largo

Puede también utilizar WshNetwork.MapNetworkDrive para conectar unidad J en un recurso conocido, crear el acceso directo como se describe en los pasos anteriores y a continuación, quitar unidad J mediante WshNetwork.RemoveNetworkDrive.

El método de interfaz IShellLink

Un extracto de código que muestra el problema mediante la interfaz IShellLink en 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");
				
IPersistFile::Save debe utilizar para escribir el acceso directo en el disco. Esta acción da como resultado una ruta de destino de:

X:\Azertyui\Azertyui.exe

Este problema se produce en todas las versiones de Windows NT 4.0 y Windows 2000.

Propiedades

Id. de artículo: 263324 - Última revisión: martes, 31 de octubre de 2006 - Versión: 3.3
La información de este artículo se refiere a:
  • Microsoft Windows 2000 Professional Edition
  • Microsoft Systems Management Server 1.0 Standard Edition
  • Microsoft Systems Management Server Installer 2.0
  • Microsoft Windows NT Workstation 4.0 Developer Edition
  • Microsoft Windows XP Home Edition
  • Microsoft Windows XP Professional
Palabras clave: 
kbmt kbnofix kbprb kbsms200presp3 kbui KB263324 KbMtes
Traducción automática
IMPORTANTE: Este artículo ha sido traducido por un software de traducción automática de Microsoft (http://support.microsoft.com/gp/mtdetails) en lugar de un traductor humano. Microsoft le ofrece artículos traducidos por un traductor humano y artículos traducidos automáticamente para que tenga acceso en su propio idioma a todos los artículos de nuestra base de conocimientos (Knowledge Base). Sin embargo, los artículos traducidos automáticamente pueden contener errores en el vocabulario, la sintaxis o la gramática, como los que un extranjero podría cometer al hablar el idioma. Microsoft no se hace responsable de cualquier imprecisión, error o daño ocasionado por una mala traducción del contenido o como consecuencia de su utilización por nuestros clientes. Microsoft suele actualizar el software de traducción frecuentemente.
Haga clic aquí para ver el artículo original (en inglés): 263324

Enviar comentarios

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com