在cmd

时间:2019-04-02 17:05:31

标签: java swing

所以我的问题是我有一个按钮想要以管理员身份在cmd上运行复制命令,因为该按钮的建议是将文件复制到Directry字体,但是由于目录字体需要管理员特权,因此它拒绝访问。

我拥有的代码是这样:

try {
            Runtime rt = Runtime.getRuntime();;
            if(e.getState()) {
            rt.exec("runas /user:administrator cmd /c start /MIN cmd.exe /C" + "copy E:\\automation\\bin\\automation\\TitiliumWeb\\* C:\\Windows\\Fonts\\");
            }
            else if(d.getState()) {
                rt.exec("runas /user:administrator cmd /c start /MIN cmd.exe /C" + "copy D:\\automation\\bin\\automation\\TitiliumWeb\\* C:\\Windows\\Fonts\\");
            }
        } catch (IOException e) {
            e.printStackTrace();
        }

结果是它什么也不做,因为它需要管理员的密码,但我不知道将密码放在哪里。

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

即使无需手动输入密码也可以执行此操作,更改用户的计算机也是不合适的。

您已经在问题中添加了swing标记,因此我假设您需要一些自定义字体才能在Swing程序中使用。正确的方法是:

  • 在应用程序中包含字体文件。每个IDE都有一个“资源”部分。
  • 在运行时,使用Class.getResourceAsStream阅读嵌入的字体文件。
  • 将返回的InputStream传递到Font.createFont
  • 使用deriveFont获得所需的尺寸。

代码可能看起来像这样:

Font font;
try (InputStream fontSource =
    MyApplication.class.getResourceAsStream("TitilliumWeb-Regular.ttf")) {

    font = Font.createFont(fontSource);

    // 12 pt font
    font = font.deriveFont(12f);

} catch (IOException | FontFormatException e) {
    throw new RuntimeException("Required font is corrupted", e);
}