Установить кодовую страницу для расширения оболочки
Мне нужно зарегистрировать расширение Shell для Windows, которое должно обрабатывать файлы и папки с именами на любом языке.
К сожалению, похоже, что Windows запускает свои расширения оболочки через командную строку, и, таким образом, параметры передаются не в Unicode, а в кодовую страницу командной строки, что почти всегда плохо. Я знаю, что в Windows есть функция API GetCommandLineW
, но поскольку рассматриваемая программа написана на Java, для ее использования потребуется неуклюжий код JNA / JNI, которого я стараюсь избегать.
Установка кодовой страницы по умолчанию для всей ОС, кажется, не является жизнеспособным вариантом, так как единственная найденная мною опция - это настройка HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Nls\CodePage\OEMCP
, которая, как сообщается, может заставить систему отказаться от загрузки - большой нет-нет, как мы говорим производство машин.
Я пытался установить мои расширения оболочки command
на что-то вроде
chcp 65001 & "C:\path\to\java\javaw.exe" -jar "C:\path\to\program\program.jar" "%1"
или изменения с или без %SystemRoot%
, > nul
и т. д., но все они приводят к одному и тому же - при выполнении расширения оболочки мигает окно командной строки, но моя программа никогда не вызывается.
Следующим шагом было создание простого командного файла:
chcp 65001 "C:\path\to\java\javaw.exe" -jar "C:\path\to\program\program.jar" "%1"
и изменив команду расширения оболочки на:
"C:\path\to\program\batch.bat" "%1"
Но всякий раз, когда я пытался запустить это, я получал сообщение об ошибке
Системе не удалось прочитать с указанного устройства
Это заставляет меня поверить, что параметр был искажен выполнением расширения оболочки до достижения командного файла, и в этот момент его нельзя было сохранить.
Итак, мой вопрос - есть ли разумный способ попросить Windows передавать аргументы в Unicode (или любой другой кодовой странице) при запуске расширения оболочки? Или это единственный вариант использования нативного API GetCommandLineW
?
0 ответов на вопрос
Похожие вопросы
-
12
Почему папка / winsxs становится такой большой и ее можно уменьшить?
-
2
Повышенные привилегии для запуска приложений в Windows?
-
14
PDF Viewer в Windows
-
-
7
Какие службы Windows можно безопасно отключить?
-
8
Firefox PDF плагин для просмотра PDF в браузере на Windows
-
1
Windows теряет макет экрана
-
1
Есть ли способ предотвратить установку / обновление, чтобы засорять мой жесткий диск загадочными пап...
-
1
Как я могу получить доступ к принтеру Windows Vista из Ubuntu по сети?
-
6
Просмотр журнала в Windows
-
3
Фоновая проблема Windows с двумя экранами