2

У меня Windows Vista, но я думаю, что это относится и к другим версиям. Я хочу установить программу для использования в контекстном меню «Открыть с помощью». Теперь я хочу, чтобы путь к .exe содержал переменную окружения. Таким образом, я могу переместить местоположение моего приложения, изменить соответствующую переменную среды, и все работает отлично.

Проблема состоит из трех компонентов:

  1. Значение ключа в

    HKEY_CLASSES_ROOT\Applications\myapp.exe\shell\open\command
    

    например, "C:\myapp\myapp.exe" "%1" , жестко запрограммирован и имеет тип REG_SZ . Мне нужно, чтобы он был типа REG_EXPAND_SZ , например, "%MYAPPSDIR%\myapp.exe" "%1" . Это типично для встроенных программ, например, %SystemRoot%\system32\NOTEPAD.EXE %1 .

  2. Тип ключа изменить нельзя, поэтому то, что было рождено как REG_SZ , так и живет.

  3. Похоже, что я не могу "перегенерировать" переменную как REG_EXPAND_SZ .

Есть ли шанс сделать то, что я имею в виду?

Существует также бонусный вопрос, Как получить параметр в командном файле.

1 ответ1

3
reg add "HKCR\Applications\myapp.exe\shell\open\command" /ve /t REG_EXPAND_SZ /d "\"^%MYAPPSDIR^%\myapp.exe\" \"^%1\"" /f

Замечания:

  • во избежание расширения %MYAPPSDIR% помощью интерпретатора командной строки символ % процента должен быть экранирован стандартным escape-символом CLI (^ caret): ^%MYAPPSDIR^% ;
  • включить кавычки " данных, префикс с символом reg черту \ обратной косой черты). Например, \" здесь есть кавычка, так как команда REG будет интерпретировать \ как escape для символа, который следует за ним.

Пример (copy&paste из командной строки моего администратора ):

C:\Windows\system32>reg query "HKCR\Applications\mspaint.exe\shell\edit\command" /ve

HKEY_CLASSES_ROOT\Applications\mspaint.exe\shell\edit\command
    (Default)    REG_EXPAND_SZ    "%systemroot%\system32\mspaint.exe" "%1"

C:\Windows\system32>reg add "HKCR\Applications\mspaint.exe\shell\edit\command" /ve /t
 REG_EXPAND_SZ /d "\"^%systemroot^%\system32\mspaint.exe\" \"^%1\"" /f
The operation completed successfully.

C:\Windows\system32>reg query "HKCR\Applications\mspaint.exe\shell\edit\command" /ve

HKEY_CLASSES_ROOT\Applications\mspaint.exe\shell\edit\command
    (Default)    REG_EXPAND_SZ    "%systemroot%\system32\mspaint.exe" "%1"

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .