【问题标题】:How to open cmd in java如何在java中打开cmd
【发布时间】:2015-05-25 17:25:43
【问题描述】:

你能帮帮我吗?我正在尝试从我的 Java 代码中打开命令提示符 (CMD),但它给了我一个异常。我试图打开记事本等其他程序,但它工作正常。我看到我运行的其他 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

【问题讨论】:

    标签: java cmd


    【解决方案1】:

    一个可能的原因是有一个组策略来阻止对命令提示符的访问。您可以通过运行 gpedit.msc 实用程序 (User Configuration/Administrative Templates/System) 来验证这一点。

    DisableCMD 密钥也可以存在于注册表中的以下位置:

    HKEY_CURRENT_USER\Software\Policies\Microsoft\Windows\System
    

    如果值为 0,则当前用户禁用命令提示符。

    【讨论】:

    • 但是,我的用户仍然是这台电脑的管理员。
    • 好吧,如果您有管理员权限,请删除该政策。
    【解决方案2】:

    这似乎是一个权限问题。如果是这种情况,您将必须创建一个清单文件,指定您的应用程序需要管理员权限。

    以下是如何做到这一点: http://msdn.microsoft.com/en-us/library/bb756929.aspx

    【讨论】:

    • 但是,我的用户仍然是这台电脑的管理员。
    • 是的,但它会失败,因为 java 不会弹出 UAC 弹出窗口,要求您像其他可执行应用程序一样提供管理员权限。
    • 好的,有问题了。问题是 cmd.exe 设置为以管理员身份运行。 Java 不会启动设置为以管理员身份运行的应用程序。但是我在属性的菜单中看不到兼容性选项卡。你能帮忙防止 cmd 以管理员身份运行吗?
    • 请看看这是否有帮助:stackoverflow.com/questions/8560516/…
    猜你喜欢
    • 1970-01-01
    • 2020-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-08
    相关资源
    最近更新 更多