Регистрация обработчика протокола Windows 7 - неверный рабочий каталог
Я зарегистрировал собственный обработчик протокола в реестре Windows, чтобы я мог запустить свое приложение с конкретными аргументами из моего интернет-браузера. Пока регистрация работает нормально. И IE, и Chrome запускают мое приложение.
Я использовал ответ Erwinus в этом вопросе, чтобы зарегистрировать обработчик протокола: как мне создать свой собственный протокол URL? (например, так://...)
Странно, что рабочий каталог не установлен правильно обоими браузерами. Похоже, что в Chrome по умолчанию для Рабочего каталога задана пустая строка, в то время как IE по умолчанию использует рабочий каталог "C:\Users\User-X\Desktop".
Это поведение предназначено?
Есть ли способ указать рабочий реестр моего приложения в реестре?
Заранее спасибо за любые предложения по этому вопросу.
2 ответа
Рабочий каталог связан с аргументами командной строки для разрешения путей, таких как .\file.ext
и поскольку нет параметра относительного пути, рабочий каталог не должен иметь значения.
Ваше приложение не должно зависеть от рабочего каталога для загрузки библиотек и других специфических файлов приложения.
Существует недокументированное значение с именем NoWorkingDirectory
это можно установить при регистрации типов файлов, но я не уверен, применимо ли это к протоколам URL.
Прошло некоторое время, так как здесь нет ни одного правильного ответа, я столкнулся с той же проблемой и нашел ответ. Итак, разместив это здесь, это будет полезно для других.
Включите каталог изменений в протокол URL (запись реестра), чтобы рабочий каталог был изменен перед запуском приложения. Допустим, если вы создали протокол URL с именем «ProtoTest2» и хотите запустить приложение из каталога «C: \ Source \ For Ref \ URL Protocol \ BatchTest», то приведенная ниже команда обновляет запись команды протокола URL в реестре. . Сначала измените каталог на желаемое и запустите приложение. Подробный пример доступен в этом вопросе. Как сделать так, чтобы "URL-протокол" запускал приложение из его собственного каталога вместо запуска из c:\windows\system32?
reg add HKEY_CLASSES_ROOT\ProtoTest2\shell\open\command /t REG_EXPAND_SZ /d "%ComSpec% /C \"cd /D \"C:\Source\For Ref\URL Protocol\BatchTest\" ^& showPath.bat\"" /f