DetailPage-MSS-KB

Microsoft Knowledge Base

Identificativo articolo: 263324 - Ultima modifica: martedì 31 ottobre 2006 - Revisione: 3.3

 

In questa pagina

Sintomi

Quando si crea i tasti di scelta rapida e si specifica un nome di file lungo nel percorso di destinazione, il percorso viene troncato se il disco rigido per la destinazione non esiste. Ad esempio, è possibile creare un collegamento con la seguente destinazione:

J:\Mydirectory\Myapplication.exe

Se l'unità J non esiste, il percorso viene troncato per:

J:\Mydirect\Mypplica.exe

Cause

Questo problema può verificarsi perché la shell non può determinare se il disco rigido supporta lungo nomi di file, in modo che il percorso viene troncato da accettabile per tutti i sistemi di file.

Status

Microsoft ha confermato che questo problema riguarda i prodotti Microsoft elencati all'inizio di questo articolo.

Informazioni

Questo problema è possibile osservare quando si utilizza uno dei seguenti metodi per creare collegamenti:
  • Crea il programma di installazione di server (SMS) Systems Management metodo di collegamento
  • Il codice VBScript Crea metodo di collegamento
  • Il metodo di interfaccia IShellLink

Il programma di installazione SMS Crea metodo di collegamento


Un'estrazione da un file IPF SMS Installer che illustra il 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 si compila uno script con l'estrazione e viene eseguita dopo si è verificato che l'unità X non esiste, è possibile osservare che viene creato il collegamento, ma il percorso di destinazione viene troncato a:

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

Se si connettere unità X a una condivisione o utilizzare un comando subst per puntare a un'unità locale ed eseguire nuovamente lo script, il collegamento viene creato con il percorso di destinazione corretto:

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

Questo problema non è causato da SMS Installer. Questo problema si verifica perché il programma di installazione SMS utilizza l'interfaccia di IShellLink (vedere "Il metodo di interfaccia IShellLink") per creare collegamenti. Il programma di installazione SMS passa l'interfaccia IShellLink il nome di percorso corretto completo, ma il percorso viene troncato quando viene eseguita l'operazione IShellLink::SetPath.

Il metodo VBScript crea collegamento

Un esempio di VBScript che illustra il 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 si esegue questo script e l'unità J non esiste, è possibile osservare il collegamento creato, ma il percorso di destinazione è:

J:\My_long_\Myapplic.exe

Nota : qualsiasi caratteri normalmente non supportati dai sistemi di file che non si desidera nomi di file lunghi, ad esempio il carattere di spazio, vengono sostituiti con il simbolo del carattere di sottolineatura "_".

Per aggirare il problema, è possibile utilizzare il comando subst punti unità J a un disco rigido locale:
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)
				
questo comando punti unità J sull'unità c. Se l'unità C supporta nomi di file lunghi, il comando crea un collegamento con il seguente percorso di destinazione:

Directory\Myapplication.exe lungo J:\My

È possibile anche utilizzare WshNetwork.MapNetworkDrive per connettere unità J una condivisione di nota, creare il collegamento, come descritto nella procedura precedente e rimuovere unità J utilizzando WshNetwork.RemoveNetworkDrive.

Il metodo di interfaccia IShellLink

Un'estrazione di codice che illustra il problema tramite l'interfaccia IShellLink in 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");
				
è necessario utilizzare IPersistFile::Save per scrivere il collegamento su disco. Questa azione comporta un percorso di destinazione:

X:\Azertyui\Azertyui.exe

Questo problema si verifica in tutte le versioni di Windows NT 4.0 e Windows 2000.

Le informazioni in questo articolo si applicano 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
Chiavi: 
kbmt kbnofix kbprb kbsms200presp3 kbui KB263324 KbMtit
Traduzione automatica articoliTraduzione automatica articoli
Il presente articolo è stato tradotto tramite il software di traduzione automatica di Microsoft e non da una persona. Microsoft offre sia articoli tradotti da persone fisiche sia articoli tradotti automaticamente da un software, in modo da rendere disponibili tutti gli articoli presenti nella nostra Knowledge Base nella lingua madre dell’utente. Tuttavia, un articolo tradotto in modo automatico non è sempre perfetto. Potrebbe contenere errori di sintassi, di grammatica o di utilizzo dei vocaboli, più o meno allo stesso modo di come una persona straniera potrebbe commettere degli errori parlando una lingua che non è la sua. Microsoft non è responsabile di alcuna imprecisione, errore o danno cagionato da qualsiasi traduzione non corretta dei contenuti o dell’utilizzo degli stessi fatto dai propri clienti. Microsoft, inoltre, aggiorna frequentemente il software di traduzione automatica.
Clicca qui per visualizzare la versione originale in inglese dell’articolo: 263324  (http://support.microsoft.com/kb/263324/en-us/ )
LE INFORMAZIONI CONTENUTE NELLA MICROSOFT KNOWLEDGE BASE SONO FORNITE SENZA GARANZIA DI ALCUN TIPO, IMPLICITA OD ESPLICITA, COMPRESA QUELLA RIGUARDO ALLA COMMERCIALIZZAZIONE E/O COMPATIBILITA' IN IMPIEGHI PARTICOLARI. L'UTENTE SI ASSUME L'INTERA RESPONSABILITA' PER L'UTILIZZO DI QUESTE INFORMAZIONI. IN NESSUN CASO MICROSOFT CORPORATION E I SUOI FORNITORI SI RENDONO RESPONSABILI PER DANNI DIRETTI, INDIRETTI O ACCIDENTALI CHE POSSANO PROVOCARE PERDITA DI DENARO O DI DATI, ANCHE SE MICROSOFT O I SUOI FORNITORI FOSSERO STATI AVVISATI. IL DOCUMENTO PUO' ESSERE COPIATO E DISTRIBUITO ALLE SEGUENTI CONDIZIONI: 1) IL TESTO DEVE ESSERE COPIATO INTEGRALMENTE E TUTTE LE PAGINE DEVONO ESSERE INCLUSE. 2) I PROGRAMMI SE PRESENTI, DEVONO ESSERE COPIATI SENZA MODIFICHE, 3) IL DOCUMENTO DEVE ESSERE DISTRIBUITO INTERAMENTE IN OGNI SUA PARTE. 4) IL DOCUMENTO NON PUO' ESSERE DISTRIBUITO A SCOPO DI LUCRO.
Condividi
Altre opzioni per il supporto
Forum del supporto di Microsoft Community
Contattaci direttamente
Ricerca di un partner certificato Microsoft
Microsoft Store