Подтвердить что ты не робот

UAC и Java

Можно ли запрашивать повышенные разрешения из Java-приложения? Предложения, которые я видел, похоже, сосредоточены вокруг запуска внешнего исполняемого файла или настройки манифеста для запроса привилегий при запуске. Они недоступны, например, для апплетов. Есть ли способ запросить возвышение из работающего приложения?

4b9b3361

Ответ 1

UAC - это не то, что запрошенный процесс может запросить (неважно, на каком языке вы работаете). Вы должны запросить высоту во время запуска.

То, как обрабатываются большинство приложений для Windows (и заставить их выглядеть так, как будто они запрашивают возвышение), заключается в том, чтобы создать дополнительную копию себя, запросить высоту и передать достаточные аргументы командной строки для нового процесса, чтобы соответствующий диалог мог будет отображаться.

Вот почему высота UAC в диалоговом окне всегда начинается нажатием кнопки, открывающей новое диалоговое окно.

Итак, в мире Java вам просто нужно делать то, что должны делать все остальные: снова запустите приложение, запросив возвышение. Существует несколько способов запуска повышенного уровня, глагол "run as", возможно, является самым легким.

Ответ 2

Похоже, что Sun будет обрабатывать такую ​​ситуацию в JRE, поскольку нет другого способа делать повышенные действия, кроме запуска внешнего процесса.

Если JRE поддерживает его, JVM, вероятно, придется запускать отдельный, повышенный процесс для Java-кода, запрашивающего повышение.

Пока же, насколько я знаю, доступны только манифест или запуск внешнего приложения.

Вопрос в том, для чего вам нужна высота для?

Ответ 3

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

Ответ 4

Вы можете использовать jna и сделать ShellExec. Для lpOperation используйте "runas" (это не документировано). Поскольку вам, вероятно, понадобится полный путь к (текущему) JavaVM, который хранится в разделе реестра в доступ к реестру, часть JNA.

Ответ 5

Откройте папку, в которой установлена ​​Java. откройте свойства javaw.exe/java.exe и установите опцию "запустить как администратор" true.