2011-01-14 15 views
5

Windows 7 (e probabilmente Windows Vista) visualizza i nomi delle cartelle localizzate utilizzando la voce LocalizedResourceName nel file desktop.ini. Per la mia cartella Documents, questo appare comeFunzione per ottenere il percorso localizzato?

[.ShellClassInfo] 
[email protected]%SystemRoot%\system32\shell32.dll,-21770 
IconResource=%SystemRoot%\system32\imageres.dll,-112 
IconFile=%SystemRoot%\system32\shell32.dll 
IconIndex=-235 

(vedi this questione)

In questo modo l'esploratore visualizza il percorso "C: \ Users \ Nome Utente \ Documents" come "C: \ Benutzer \ nome utente \ Dokumente "su un tedesco Windows.

Mi chiedo, se c'è qualche funzione di shell incorporata per ottenere automaticamente questo nome localizzato o, ancora meglio, trasformare un intero percorso nella sua forma localizzata (meglio sarebbe qualche cosa in .NET)?

Questo è ancora più interessante in quanto la voce LocalizedResourceName è documentata solo per Windows CE (vedere here).

Grazie

Martin

risposta

0

Sono abbastanza sicuro che non ci sia una funzione di trasformare un percorso per la sua forma localizzata, perché quando si vede il quadro più ampio che non ha senso. Se si dispone di un profilo di roaming, potrebbe non esserci nemmeno una cartella "Utenti" o "Benutzer" perché sarebbe tutto dovunque l'amministratore del server lo mise.

Si pone anche la domanda su come si chiama questa funzione. Per amor di discussione, supponiamo che tu lo chiami con i default inglesi degli Stati Uniti. Se dici "dammi la versione localizzata in tedesco di c: \ Users \ Bob", Vista e Windows 7 andranno bene con questo, ma XP non conosce la cartella "Users". In tal modo si romperebbe senza una patch all'indietro che non si può garantire sarebbe installata.

In genere, Microsoft consiglia di non preoccuparsi nemmeno della metà sinistra di un percorso. Invece dovresti semplicemente usare Environment.GetFolderPath() e passare una delle enumerazioni SpecialFolder. Qualunque cosa dopo la parte speciale della cartella è tua da definire e creare, ma il gioco è fatto. Il tuo codice dovrebbe dire, "relativo al desktop creare una cartella chiamata Bob". Qualunque cosa risolva non dovrebbe mai essere memorizzata perché è possibile che quel percorso cambi un giorno,

+0

Penso che tu abbia frainteso la mia domanda (probabilmente è colpa mia): se visualizzo il risultato di 'GetFolderPath' (che sto usando, ovviamente) per il mio utente, è confuso, perché questa funzione restituisce" C:/User/Name/Documents "(anche su sistemi tedeschi) dove vede" C:/Benutzer/Name/Dokumente "nel suo esploratore. Questa localizzazione automatica è fatta dalla shell usando le voci in desktop.ini e stavo chiedendo dei mezzi per farlo da solo. – MartinStettner

Problemi correlati