O comando Criar atalho trunca os nomes de pasta do caminho de origem para oito caracteres

Support for Windows XP has ended

Microsoft ended support for Windows XP on April 8, 2014. This change has affected your software updates and security options. Learn what this means for you and how to stay protected.

IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine Translation ou MT), não tendo sido portanto traduzido ou revisto por pessoas. A Microsoft possui artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais, com o objetivo de oferecer em português a totalidade dos artigos existentes na base de dados de suporte. No entanto, a tradução automática não é sempre perfeita, podendo conter erros de vocabulário, sintaxe ou gramática. A Microsoft não é responsável por incoerências, erros ou prejuízos ocorridos em decorrência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza atualizações freqüentes ao software de tradução automática (MT). Obrigado.

Clique aqui para ver a versão em Inglês deste artigo: 263324
Este artigo foi arquivado. É oferecido "como está" e não será mais atualizado.
Sintomas
Quando você cria atalhos e especificar um nome de arquivo longo no caminho de destino, o caminho é truncado se o disco rígido para o destino não existir. Por exemplo, crie um atalho com o destino a seguir:

J:\Mydirectory\Myapplication.exe

Se a unidade J não existir, o caminho será truncado para:

J:\Mydirect\Mypplica.exe
Causa
Esse problema pode ocorrer porque o shell não pode determinar se o disco rígido suporta nomes extensos de arquivos, para que o caminho for truncado para ser aceitável para todos os sistemas de arquivos.
Situação
A Microsoft confirmou que este é um problema nos produtos da Microsoft listados no começo deste artigo.
Mais Informações
Esse problema pode ser observado quando você usar qualquer um dos seguintes métodos para criar atalhos:
  • O Installer do Systems Management Server (SMS) Criar Método de atalho
  • O VBScript criar método de atalho
  • O método de interface IShellLink

O Installer SMS criar método de atalho


Um trecho de um arquivo de .IPF SMS Installer que demonstra o problema:
item: Create Shortcut  Source English=X:\Pw32\Alongdirectory\Blongdirectory\Longfilename.exe  Destination English=C:\Winnt\Shortcut123.lnk  Key Type English=1536  Flags=00000001end				
se você compilar um script com este extrair e você executá-lo após você ter garantiu que a unidade X não existe, você pode observar que o atalho é criado, mas o caminho de destino será truncado para:

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

Se você se conectar a unidade X a um compartilhamento ou use um comando subst para apontar para uma unidade local e executar o script novamente, o atalho será criado com o caminho de destino correto:

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

Esse problema não é causado pelo SMS Installer. Esse problema ocorre porque o instalador do SMS usa a interface IShellLink (consulte "Método de interface de IShellLink A") para criar atalhos. O Installer SMS passa o nome de caminho completo correto para a interface IShellLink, mas o caminho for truncado quando a operação IShellLink::SetPath é executada.

O método VBScript criar atalho

Um exemplo de VBScript que demonstra o 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 = 1oShellLink.Hotkey = "CTRL+SHIFT+F"oShellLink.Description = "Long Filename Shortcut"oShellLink.Save				
quando você executar esse script e a unidade J não existe, você pode observar o atalho criado, mas o caminho de destino é:

J:\My_long_\Myapplic.exe

Observação : qualquer caracteres que normalmente não são suportados por sistemas de arquivos que não quer nomes de arquivo longos, como o caractere de espaço, são substituídos pelo símbolo de sublinhado "_".

Para contornar este problema, você pode usar o comando subst para apontar a unidade J para um disco rígido local:
set WshShell = WScript.CreateObject("WScript.Shell")Dim ret'subst a drive to make the mapping workret = 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 = 1oShellLink.Hotkey = "CTRL+SHIFT+F"oShellLink.Description = "Long Filename Shortcut"oShellLink.Save'remove the substret = WshShell.Run ("cmd /c subst j: /d", 0, TRUE)				
este comando pontos unidade J para a unidade C. Se a unidade C der suporte a nomes extensos de arquivos, o comando cria um atalho com o seguinte caminho de destino:

J:\My directory\Myapplication.exe longo

Você pode também usar WshNetwork.MapNetworkDrive para se conectar a unidade J em um compartilhamento conhecido, criar o atalho conforme descrito nas etapas anteriores e, em seguida, remover unidade J usando WshNetwork.RemoveNetworkDrive.

O método de interface IShellLink

Um trecho de código que demonstra o problema usando a interface IShellLink no 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");				
você deve usar IPersistFile::Save para gravar o atalho no disco. Esta ação resulta em um caminho de destino de:

X:\Azertyui\Azertyui.exe

Esse problema ocorre em todas as versões do Windows NT 4.0 e Windows 2000.

Propriedades

ID do Artigo: 263324 - Última Revisão: 12/05/2015 20:21:18 - Revisão: 3.3

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

  • kbnosurvey kbarchive kbmt kbnofix kbprb kbsms200presp3 kbui KB263324 KbMtpt
Comentários