DetailPage-MSS-KB

Base de Dados de Conhecimento

ID do artigo: 263324 - Última revisão: terça-feira, 31 de outubro de 2006 - Revisão: 3.3

 

Nesta página

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=00000001
end
				
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 = 1
oShellLink.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 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 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.

A informação contida neste artigo aplica-se 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
Palavras-chave: 
kbmt kbnofix kbprb kbsms200presp3 kbui KB263324 KbMtpt
Tradução automáticaTradução automática
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  (http://support.microsoft.com/kb/263324/en-us/ )
Compartilhar
Opções de suporte adicionais
Fóruns de Suporte do Microsoft Community
Contate-nos diretamente
Localize um parceiro certificado da Microsoft
Microsoft Store