Manejo de parámetros de nombre de archivo de Windows en la acción de tipo de archivo

Manejo de parámetros de nombre de archivo de Windows en la acción de tipo de archivo

Tengo una herramienta que agregué a la subclave de shell de la clave de cualquier archivo en HKEY_CLASSES_ROOT para que aparezca en el menú contextual de cualquier archivo (también la tengo en el menú del directorio).

[HKEY_CLASSES_ROOT\*\shell\PathToClipboard]
@="Path -> Clipboard"

[HKEY_CLASSES_ROOT\*\shell\PathToClipboard\command]
@="C:\\Program Files (x86)\\PathToClipboard.exe %1"

La herramienta no hace más que copiar el parámetro dado (la ruta del archivo) al portapapeles.

Esto funcionó al menos durante años desde Win ME (es posible que se haya vuelto a compilar desde entonces). También funciona para Win-7, pero con algunas peculiaridades: si la ruta del archivo contiene espacios o cualquier otro carácter no alfanumérico, se acorta al Nombre de compatibilidad con DOS.

Por ejemplo:C:\PROGRA~2\PATHTO~1.EXE

¿Hay alguna forma de evitar esto?

Si coloco "la %1ruta es correcta pero Windows también pasa "al programa (que no he tocado desde hace bastante tiempo. Seguro que podría resolver esto en la herramienta, pero me pregunto si el comportamiento crudo podría solucionarse en el lado de Windows) .

Respuesta1

Si el nombre del programa contiene espacios u otros caracteres no alfanuméricos, se abrevia al Nombre de compatibilidad con DOS.

@="C:\\Program Files (x86)\\PathToClipboard.exe %1"

Las comillas deben rodear las partes individuales, no la cadena completa.

En este caso particular, solo debes citar la primera parte (nombre del programa)ytoda la cadena:

@="\"C:\\Program Files (x86)\\PathToClipboard.exe\" %1"

Nota:

  • \se utiliza para escapar de las comillas internas (aquellas alrededor del nombre del programa)
  • Si también cita %1(la ruta del archivo), se agregarán las comillas cuando la ruta del archivo se pase al programa, así que no cite esta parte.

información relacionada