使用JNA java SetSystemTime更改系统时间

时间:2016-06-14 09:46:31

标签: java date time jna

在Java中,我们通过调用返回long值的System.currentTimeMillis()来获取系统时间。我们在本地网络中拥有服务器和客户端并保持它们同步,我们需要确保计算机具有相同的时间。 (+/- 10秒可以忍受)

我们需要使用java更改客户端计算机的系统时间。我们尝试使用命令提示符date -s,但它需要管理员权限。所以它没有用。然后,我们尝试使用SetSystemTimekernel32库中对Function function = Function.getFunction("kernel32", "SetSystemTime");进行本机调用,但不知何故,我们无法使其工作。

目前,这是我们尝试运行此本机调用的方式。

Function function = Function.getFunction("kernel32", "SetSystemTime");
    Object [] params = new Object [] {
        "2015",
        "4",
        "0",
        "13",
        "14",
        "28",
        "0",
        "0"
    };

    System.out.println("invoking...");
    boolean result = (Boolean)function.invoke(Boolean.class, params);
    System.out.println(result);

我们得到false作为结果。使用JNA库。 我们的目的是修改System.currentTimeMillis()返回的值。我们正在使用的某些第三方库使用System.currentTimeMillis(),因此我们无法使用/创建另一个调用。

如果有人比使用JNA有更好的想法,请提出建议。实际上,我们发现仅仅为了改变系统日期/时间而导入JNA库并不高效,但这就是我们现在所拥有的。

0 个答案:

没有答案