2011-01-14 19 views
5

Windows 7 (y probablemente Windows Vista) muestran nombres de carpetas localizadas usando la entrada LocalizedResourceName en el archivo desktop.ini. Por mi carpeta Documents, esto se parece a¿Función para obtener una ruta localizada?

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

(ver this cuestión)

De esta manera el explorador muestra la ruta "C: \ Users \ Nombre de usuario \ Documents" como "C: \ Benutzer \ nombre de usuario \ Dokumente "en un Windows alemán.

Me pregunto, si hay alguna función de shell incorporada para obtener automáticamente este nombre localizado o, mejor aún, transformar una ruta completa en su forma localizada (lo mejor sería cualquier cosa en .NET)?

Esto es aún más interesante ya que la entrada LocalizedResourceName solo está documentada para Windows CE (consulte here).

Gracias

Martin

Respuesta

0

Estoy bastante seguro de que no es una función de transformar una ruta a su forma localizada, porque cuando se ve el cuadro más grande que no tiene sentido. Si tiene un perfil itinerante, es posible que ni siquiera haya una carpeta "Usuarios" o "Benutzer", ya que todo estará donde lo coloque el administrador del servidor.

También se plantea la cuestión de cómo se llama a esta función. En aras de la argumentación, asumiremos que lo llamas con los valores predeterminados de inglés de EE. UU. Si dices "dame la versión localizada alemana de c: \ Users \ Bob", Vista y Windows 7 estarán bien con esto, pero XP no conoce la carpeta "Usuarios". Así que eso se rompería sin un parche hacia atrás que no se puede garantizar que se instalará.

Generalmente, Microsoft recomienda no preocuparse por la mitad izquierda de una ruta. En su lugar, se supone que debes usar Environment.GetFolderPath() y pasarle una de las enumeraciones SpecialFolder. Cualquier cosa posterior a la parte de la carpeta especial es suya para definir y crear, pero eso es todo. Su código debería decir: "en relación con el escritorio, cree una carpeta llamada Bob". Lo que sea que resuelva nunca debe almacenarse porque es posible que esa ruta cambie algún día,

+0

Creo que malinterpretaste mi pregunta (probablemente es mi culpa): si muestro el resultado de 'GetFolderPath' (que estoy usando, por supuesto) para mi usuario, está confundido, porque esta función devuelve" C:/User/Name/Documents "(incluso en sistemas alemanes) cuando ve" C:/Benutzer/Name/Dokumente "en su explorador. Esta localización automática es realizada por el intérprete de órdenes usando las entradas en desktop.ini y estaba pidiendo algunos medios para hacerlo yo mismo. – MartinStettner

Cuestiones relacionadas