Программно связывающий типы файлов с .файл jar

#java

#java

Вопрос:

Я знаю, как вручную связать тип файла с .файл jar:

 assoc .ext=filetype
ftype filetype="C:Program FilesJavajre6binjavaw.exe" -jar "pathtojarfileYourJarFile.jar" "%1"  

В настоящее время я использую Runtime.exec (), чтобы попытаться выполнить эти команды, но я получаю Access is denied. от команды assoc. Я предполагаю, что мне нужны права администратора для запуска assoc, как это можно сделать из приложения Java?

Комментарии:

1. Есть ли у вашего приложения графический интерфейс? Можете ли вы распространять его с веб-сайта?

2. У этого нет графического интерфейса, я просто проводил быстрый тест, чтобы посмотреть, смогу ли я сделать это с Java.

3. Я бы рекомендовал вам сделать это из установщика, собственного кода или пакетного файла, который выполняется с повышенными правами. Смотрите мои комментарии ниже под моим ответом.

Ответ №1:

попробуйте cmd / c assoc или что-то подобное. Это встроенная команда командного процессора

Комментарии:

1. Я решил переключиться с ProcessBuilder на Runtime.exec(), и cmd / c устранил мои проблемы. Теперь я получаю ошибки отказа в доступе из команды assoc.

2. Да, я не удивлен, что это привилегированная команда. Затем у вас есть 2 варианта: запустить Java с повышенными правами (плохая идея с точки зрения безопасности) или вызвать службу или другой процесс, который постоянно выполняется в машинном коде. Или отказаться (это третий вариант).

3. Я решил использовать метод .bat-файла. Работает как по волшебству.

Ответ №2:

Это должно иметь связи с контекстом environnements. попробуйте использовать полный путь к файлу в assoc

Комментарии:

1. Каков полный путь к файлу? Я не смог найти его в папке system32.

2. MJB сказал, что assoc — это встроенная команда, похоже, так оно и есть.