Java: как я могу установить режим совместимости собственного .exe?

Итак, у меня есть собственный исполняемый файл (как для OS X, так и для Windows), спрятанный внутри .jar, который затем программно извлекается во временное место и выполняется оттуда. К сожалению, этот исполняемый файл не будет работать должным образом на моем компьютере с Windows (Win 7 64bit), однако, когда я вручную устанавливаю режим совместимости с предустановкой Windows XP, он будет работать.

Есть ли способ сделать это программно с Java?


person Jakob    schedule 23.05.2010    source источник


Ответы (2)


Я считаю, что есть способ сделать это, изменив реестр, поэтому вам придется использовать Java для программного изменения некоторых ключей реестра. Конечно, это не идеальное решение и уж точно не кроссплатформенное.

Вот ссылка на как это сделать добиться этого.

Кроме того, вам понадобится пакет Java, который использует Windows API, быстрый поиск в Google показывает это. Но я уверен, что есть и другие способы доступа к реестру.

person Waleed Amjad    schedule 23.05.2010
comment
это выглядит хорошо, спасибо. Заглянув в него, я никогда раньше не использовал реестр Windows. я полагаю, сгенерированные ключи реестра должны быть удалены, как только временный исполняемый файл больше не нужен, или в настоящее время реестр очищается сам? - person Jakob; 24.05.2010
comment
Если вы установили раздел реестра, ваша задача — очистить его, если вы считаете, что его следует очистить. - person Kevin Day; 24.05.2010

Я думаю, что вы действительно хотите исправить несовместимость в своем родном exe. Режим совместимости предназначен для приложений, в которых у пользователя просто нет выбора. Я не могу сказать вам, сколько часов я потратил впустую на отладку глупого поведения, вызванного тем, что пользователь случайно включил режим совместимости - лучше избегать этого, если у вас есть выбор в этом вопросе.

person Kevin Day    schedule 24.05.2010
comment
я бы так и сделал, но exe не мой. - person Jakob; 24.05.2010