Как открыть CMD в Java

1

не могли бы вы мне помочь, пожалуйста? Я пытаюсь открыть командную строку (CMD) из моего Java-кода, но это дает мне исключение. Я пытался открыть другие программы, такие как блокнот, но он отлично работает. Я вижу, что другие программы Java, которые я запускаю, также не могут открыть CMD. Вот мой код.

Process p = Runtime.getRuntime().exec("cmd/k \" " + Methods.getLastfile().getAbsolutePath() + " \" ");


Вот мои журналы

java.io.IOException: не удается запустить программу "cmd": ошибка CreateProcess = 740, запрошенная операция требует повышения

at java.lang.ProcessBuilder.start(ProcessBuilder.java:1048)
at java.lang.Runtime.exec(Runtime.java:620)
at java.lang.Runtime.exec(Runtime.java:450)
at java.lang.Runtime.exec(Runtime.java:347)
at gfx.Editor$4.actionPerformed(Editor.java:153)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2022)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2346)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)
at java.awt.Component.processMouseEvent(Component.java:6525)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3322)
at java.awt.Component.processEvent(Component.java:6290)
at java.awt.Container.processEvent(Container.java:2234)
at java.awt.Component.dispatchEventImpl(Component.java:4881)
at java.awt.Container.dispatchEventImpl(Container.java:2292)
at java.awt.Component.dispatchEvent(Component.java:4703)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4898)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4533)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4462)
at java.awt.Container.dispatchEventImpl(Container.java:2278)
at java.awt.Window.dispatchEventImpl(Window.java:2739)
at java.awt.Component.dispatchEvent(Component.java:4703)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:751)
at java.awt.EventQueue.access$500(EventQueue.java:97)
at java.awt.EventQueue$3.run(EventQueue.java:702)
at java.awt.EventQueue$3.run(EventQueue.java:696)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:75)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:86)
at java.awt.EventQueue$4.run(EventQueue.java:724)
at java.awt.EventQueue$4.run(EventQueue.java:722)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:75)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:721)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)
Caused by: java.io.IOException: CreateProcess error=740, The requested               operation requires elevation
at java.lang.ProcessImpl.create(Native Method)
at java.lang.ProcessImpl.<init>(ProcessImpl.java:386)
at java.lang.ProcessImpl.start(ProcessImpl.java:137)
at java.lang.ProcessBuilder.start(ProcessBuilder.java:1029)
... 40 more

Теги:
cmd

2 ответа

0

Одна из возможных причин заключается в том, что существует групповая политика для предотвращения доступа к командной строке. Вы можете проверить это, выполнив утилиту gpedit.msc (User Configuration/Administrative Templates/System).

Ключ DisableCMD также может присутствовать в реестре по следующему адресу:

HKEY_CURRENT_USER\Software\Policies\Microsoft\Windows\System

Если значение равно 0, то для текущего пользователя команда отключена.

  • 0
    Но все же мой пользователь является администратором этого ПК.
  • 0
    Ну, если у вас есть права администратора, то удалите политику.
0

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

Вот как это сделать: http://msdn.microsoft.com/en-us/library/bb756929.aspx

  • 0
    Но все же мой пользователь является администратором этого ПК.
  • 0
    да, но это не удастся, так как java не вызовет всплывающее окно UAC с просьбой предоставить права администратора, как и другие исполняемые приложения.
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню