Handhabung von Dateinamenparametern unter Windows bei Dateitypaktionen

Handhabung von Dateinamenparametern unter Windows bei Dateitypaktionen

Ich habe ein Tool, das ich dem Shell-Unterschlüssel des Any-File-Schlüssels unter HKEY_CLASSES_ROOT hinzugefügt habe, sodass es im Rechtsklickmenü jeder Datei angezeigt wird (dies ist auch im Verzeichnismenü vorhanden).

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

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

Das Tool tut nichts anderes, als den angegebenen Parameter (den Dateipfad) in die Zwischenablage zu kopieren.

Dies funktionierte zumindest seit Win ME (es kann sein, dass es seitdem neu kompiliert wurde). Es funktioniert auch einigermaßen unter Win-7, allerdings mit einigen Macken: Wenn der Dateipfad Leerzeichen oder andere nicht alphanumerische Zeichen enthält, wird er auf den DOS-kompatiblen Namen gekürzt.

Zum Beispiel:C:\PROGRA~2\PATHTO~1.EXE

Gibt es eine Möglichkeit, das zu umgehen?

Wenn ich es eingebe, "ist %1der Pfad korrekt, aber Windows übergibt es auch "an das Programm (das ich schon eine ganze Weile nicht mehr angefasst habe. Sicher, ich könnte das im Tool lösen, aber ich frage mich, ob das grobe Verhalten auf der Windows-Seite behoben werden könnte).

Antwort1

Wenn der Programmname Leerzeichen oder andere nicht alphanumerische Zeichen enthält, wird er auf den DOS-kompatiblen Namen gekürzt.

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

Die Anführungszeichen sollten die einzelnen Teile umschließen, nicht die komplette Zeichenfolge.

In diesem speziellen Fall sollten Sie nur den ersten Teil (Programmname) zitieren.Unddie ganze Zeichenfolge:

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

Notiz:

  • \wird verwendet, um die inneren Anführungszeichen (die um den Programmnamen herum) zu maskieren.
  • Wenn Sie auch %1(den Dateipfad) in Anführungszeichen setzen, werden die Anführungszeichen hinzugefügt, wenn der Dateipfad an das Programm übergeben wird. Setzen Sie diesen Teil daher nicht in Anführungszeichen.

verwandte Informationen