Copy FileName to Clipboard – копирование имени файлов

«Copy FileName to Clipboard – Shell extension» – встраивается в контекстное меню Проводника, и добавляет пункт «Копировать имя файла…».

Подобных программ много, я во времена WinXP пользовался Path2Clipboard. Но она не работает под 64-битными версиями Windows, а найти достойной альтернативы не удалось (в google нашлось не один десяток подобных программ – но либо тоже только для 32-битной Windows либо работающие неудобно). В Windows 7 есть штатное копирование имени файла если удерживать клавишу Shift при вызове контекстного меню (и очевидно этот факт снизил кол-во желающих написать такой софт), но во-первых там только один вариант (полное имя с путями), во-вторых надо ещё нажимать Shift, в-третьих там есть проблемы с Unicode->ANSI.

Вобщем искать надоело, и я написал соответствующее расширение проводника, в вариантах для 32-битной Windows (CopyFileNameExt32.dll) и для 64-битной Windows (CopyFileNameExt64.dll).

Скриншот CopyFileName (в WinXP)

Позволяет копировать имена файлов в буфер обмена в следующих вариантах:
filename.ext – просто полное имя (с расширением);
“filename.ext” – тоже самое но в кавычках (актуально если имя длинное или с пробелами);
filename – только имя (без расширения);
C:\Program Files\filename.ext – полный путь и полное имя с расширением;
“C:\Program Files\filename.ext” – тоже самое но в кавычках;
“C:\\Program Files\\filename.ext” – дополнительно удваиваются обратные слэши (надо например для программистов);
C:\PROGRA~1\FILENA~1.EXT – путь и имя в формате 8.3 (помните, что в современной Windows это только локальное временное имя, на другом компьютере или просто через некоторое время этот же файл может получить совсем другой номер в коротком имени, либо вообще использование имён 8.3 может быть отключено через fsutil.exe);

Внимание, эта программа работает в адресном пространстве Проводника, поэтому при любых ошибках (хотя я их не нашёл – но по статистике этого исключать нельзя) – проводник (а вместе с ним и десктоп, панель задач, трей) будет падать (вероятно, с потерей каких-то данных). Программа распространяется бесплатно и автор не несёт ответственность за вероятные последствия. Вы используете эту программу на свой страх и риск. Если вы не согласны с этим – вы не должны использовать эту программу.

Если выбрано несколько файлов – то имена файлов будут скопированы в виде многострочного текста (с разделителем CR,LF).

Реализована проверка встречающихся букв. Значок перед строкой указывает на возможные проблемы и ограничения этого имени:
7b – 7bit – строка содержит только 7-битные символы ASCII (т.е. только английские буквы – самое беспроблемное);
8b – 8bit – строка содержит 8-битные символы (национальный алфавит), но все встреченные символы входят одновременно и в ANSI-таблицу и в OEM-таблицу установленные по умолчанию для неюникодных программ. На этом компьютере с таким именем проблем не будет, но на компьютерах с другой национальной локализацией проблемы будут (если не использовать на всех этапах Unicode);
A – ANSI – строка содержит 8-битные символы национального алфавита которые найдены в текущей таблице ANSI, но не найдены в таблице OEM. Например для стандартной русской локализации где ANSI=CP1251 и OEM=CP866 – это будет при значке «©» или «™». Такую строку проблематично использовать в CMD-файлах и консольных программах. Ну и на компьютерах с другой локализацией – тоже;
O – OEM – строка содержит 8-битные символы национального алфавита которые найдены в текущей таблице OEM, но не найдены в таблице ANSI. Например для стандартной русской локализации где ANSI=CP1251 и OEM=CP866 – это будет при значке «√» или псевдографике. Такую строку проблематично использовать в GUI-программах. Ну и на компьютерах с другой локализацией – тоже;
U – Unicode – строка содержит символы которые не найдены в текущих 8-битных таблицах ANSI и OEM. Такую строку можно использовать только в Unicode.

Программа всегда копирует в буфер обмена текст в виде Unicode (CF_UNICODETEXT), а для его корректной вставки в программах не поддерживающих Unicode – буферу обмена присваивается идентификатор CF_LOCALE со значением SUBLANG_SYS_DEFAULT (оно соответствует установленному в настройках Windows в панели управления языку для неюникодных программ). Таким образом тут нет проблемы с выбором режима работы ANSI или Unicode – текст всегда будет правильно вставлен (кстати в отличии от штатного копирования имени файла у Windows 7, где такая проблема бывает).

Системные требования: предполагается работоспособность на всех 32-битных и 64-битных версиях Windows XP SP3 (XP-64 SP2), Windows 2003, Windows Vista, Windows 7, Windows 2008, Windows 8, Windows 8.1, Windows 2012, Windows 10.

Вирусов в программе нет (для правильного CopyFileName.exe v1.0.2.1 MD5:845667ed27ca6b864a6f343ca635f437). Многие антивирусы ложно реагируют на инсталлятор, но писать каждому разработчику антивируса малопродуктивно. Для параноиков – ниже есть сами DLL (на них антивирусы не реагируют), их можно установить вручную без инсталлятора.


История развития программы:
v.1.0.2.1 (2016.02.24) Исправлена логика автовыбора языка – язык теперь зависит от выбранного в панели управления регионального стандарта.
v.1.0.2.0 (2016.02.18) Мелкие доработки инсталлятора (манифесты для Win10).
v.1.0.1.6 (2013.12.12) Исправлена ошибка приводившая к падениям Проводника на некоторых 64-битных системах при копировании 8.3-имён, и инсталлятор упакован в UPX.
v.1.0.1.5 (2013.10.15) Исправлена ошибка приводившая к падениям Проводника на некоторых 64-битных системах, мелкие доработки инсталлятора.
v.1.0.1.2 (2012.08.03) Инсталлятор теперь не запакован в UPX (иначе многие антивирусы на него ложно срабатывали), в DLL ничего нового;
v.1.0.1.1 (2012.01.25) Мелкие доработки инсталлятора (RTF-справка с картинками встроена и т.п.), в DLL ничего нового;
v.1.0.1.0 (2012.01.06) Теперь в win64 регистрируется и 32-битная DLL, для работы в окнах Проводника вызываемых из 32-битных программ. Добавлена поддержка Windows 8;
v.1.0.0.3 (2011.11.30) Исправлена ошибка приводившая на некоторых компах к падениям Проводника (был конфликт с другими расширениями, которые некорректно обрабатывают отказ в IUnknown::QueryInterface – не по E_NOINTERFACE а по NULL в ppvObject);
v.1.0.0.2 (2011.11.23) Исправлена ошибка с подавлением работы некоторых других расширений оболочки при вызове на ярлыках (В Windows7 для .lnk-файлы оказалась несколько необычная работа IContextMenu::InvokeCommand – она сама приходит но с CMIC_MASK_NOASYNC);
v.1.0.0.1 (2011.01.06) Исправлена ошибка с подавлением работы некоторых других расширений оболочки (в частности – средство удаления свойств файлов переставало работать, в IContextMenu::QueryContextMenu нужна была проверка CMF_OPTIMIZEFORINVOKE);
v.1.0.0.0 (2010.12.31) первая публичная версия;

Скачать “CopyFileName_v1021.rar” – 160,41 КБВерсия 1.0.2.1, 2016-02-24 22:07


Возможна установка программы без инсталлятора:
Для Windows 32битных – скопировать файл CopyFileNameExt32.dll в папку C:\Windows\System32\, и затем выполнить команду «RegSvr32 CopyFileNameExt32.dll».
Для Windows 64битных – скопировать файл CopyFileNameExt64.dll в папку C:\Windows\System32\, и затем выполнить команду «RegSvr32 CopyFileNameExt64.dll». Дополнительно можно скопировать CopyFileNameExt32.dll в C:\Windows\SysWOW64\ и выполнить команду «C:\Windows\SysWOW64\RegSvr32 CopyFileNameExt32.dll» – это позволит использовать копирование пути в окнах Проводника запускаемых в других программах.
Удаление (без инсталлятора):
Для Windows 32битных – разрегистрировать DLL командой «RegSvr32 /u CopyFileNameExt32.dll».
Для Windows 64битных – разрегистрировать DLL командами «RegSvr32 /u CopyFileNameExt64.dll» и «C:\Windows\SysWOW64\RegSvr32 /u CopyFileNameExt32.dll».
DLL-файлы остануться залоченным до перезагрузки компьютера (или перезапуска процесса explorer.exe), потом их можно удалить.

Для установки или удаления надо админские права, при нехватке прав – будет выдана ошибка 0x80070005 (E_ACCESSDENIED).

Скачать “CopyFileName_v1021_dll_only.rar” – 8,90 КБВерсия 1.0.2.1, 2016-02-24 21:52

Создаваемые ключи реестра:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\CopyFileNameExtension
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Shell Extensions\Approved\{E8270C6C-B18E-4ED9-AA33-C1377785D8F1}
HKEY_LOCAL_MACHINE\Wow6432Node\SOFTWARE\Microsoft\Windows\CurrentVersion\Shell Extensions\Approved\{E8270C6C-B18E-4ED9-AA33-C1377785D8F1}
HKEY_CLASSES_ROOT\Directory\shellex\ContextMenuHandlers\CopyFileNameExtension
HKEY_CLASSES_ROOT\*\shellex\ContextMenuHandlers\CopyFileNameExtension
HKEY_CLASSES_ROOT\CLSID\{E8270C6C-B18E-4ED9-AA33-C1377785D8F1}
HKEY_CLASSES_ROOT\Wow6432Node\CLSID\{E8270C6C-B18E-4ED9-AA33-C1377785D8F1}
HKEY_CLASSES_ROOT\CopyFileNameExtension
HKEY_CLASSES_ROOT\CopyFileNameExtension.1