Ошибка CreateProcess = 740. Запрошенная операция требует повышения
У меня есть веб-апплет, который я регулярно обновляю, и, наконец, решил сделать обновление. Однако, когда я загружаю обновление в java, он отлично загружается. Однако, когда я пытаюсь распаковать + запустить обновление с помощью Runtime.getRuntime().exec(pathToFile);
, я получаю CreateProcess error=740, The requested operation requires elevation
Как я могу это исправить, если программа представляет собой веб-апплет? Я не могу просто сказать им, чтобы они запускали свои браузеры в качестве администраторов. Как я могу это исправить?
Ответы
Ответ 1
У одного из моих друзей была такая же проблема около месяца назад (он разворачивал обновление через файл .exe), и я помню, что эта ссылка очень помогла ему: http://mark.koli.ch/2009/12/uac-prompt-from-java-createprocess-error740-the-requested-operation-requires-elevation.html
Я бы сделал это просто комментарием по вашему вопросу (похоже, не заслуживает прямого ответа/решения), но у меня пока нет комментариев, чтобы прокомментировать.:-P
Ответ 2
При использовании .exec(cmd)
префикс вашей команды cmd /c
, чтобы вы получили что-то вроде rt.exec("cmd /c <your command>")
. Это запустит процесс и вызовет UAC при необходимости.
Ответ 3
Одна ручная работа над одним из наших инженеров нашла, если это не ваше приложение, запустите подсказку cmd, щелкните правой кнопкой мыши по окну и выберите пункт меню "Запуск от имени администратора". в моем случае запустите файл .jnlp!
Ответ 4
У меня была такая же проблема, разреши ее, запустив приложение java в качестве администратора,
чтобы сделать его постоянным: щелкните правой кнопкой мыши на своем приложении, перейдите в свойство > Совместимость > установите флажок "Запустить эту программу как администратор"
(У меня в пакетном файле запущен Java.exe -jar....)
Ответ 5
Я столкнулся с такой проблемой, когда пытался запустить приложение с командой:
cmd /c start <exe_file>
Эта команда не может запускать исполняемый файл, который требует доступа администратора.
Вместо этого используйте
rundll32 url.dll,FileProtocolHandler <exe_file>
Команда решила мою проблему. Эта команда запускает приглашение UAC, поэтому пользователь может предоставить правильный доступ, прежде чем приложение будет запущено.
В моем приложении я использовал функцию PrecessBuilder::start()
. Эта функция возвращает экземпляр java.lang.Process
, который будет активен (process.isAlive() == true
), пока пользователь не будет обрабатывать приглашение UAC, поэтому лучше добавить некоторый цикл, чтобы дождаться момента, когда он будет считать, что это приложение запущено.
Ответ 6
Причина:
Когда вы пытаетесь запустить приложение, ваша IDE пытается запустить adb, но в результате получается 740 ошибок процесса или adb, потому что вашей среде IDE не разрешено запускать файл adb.exe из ваших инструментов платформы в вашей папке sdk.
Решение:
- Убейте adb.exe, запустите eclipse.exe из диспетчера задач в Windows.
- Закройте eclipse и отсоедините телефон, перезагрузите его и отключите отладку USB и включите его снова.
- Щелкните правой кнопкой мыши значок eclipse и выберите "запустить как администратор"
- Подключите его к вашему устройству и запустите приложение.
Золотой совет - всегда запускайте свое затмение, менеджер sdk, приглашение командной строки в качестве администратора, чтобы ваша система предоставляла полное разрешение на конкретное приложение.
проверено на окне 7 64bit
устройство Samsung 4.4
eclipse ide