日期:2014-05-20  浏览次数:20795 次

Java执行window cmd修改时间问题,谢谢
window 用户本身没有修改系统时间的权限
cmd下:
C:\Users\TEDA>date 05-20-2013
A required privilege is not held by the client.

通过程序将系统时间修改为三个月后时间,执行不报错,时间并未修改,但是程序并未捕获到异常,为什么呢?如何catch到没权限的异常,谢谢。

import java.text.SimpleDateFormat;
import java.util.Calendar;

public class Test {

public final static String DEFAULTDATEPATTERN2 = "MM-dd-yyyy";
public final static SimpleDateFormat DEFAULTDATEFORMATTER2 = new SimpleDateFormat(DEFAULTDATEPATTERN2);

public static void main(String args[]) {

Calendar calendar = Calendar.getInstance();
// zero out the hours, minutes and seconds
calendar.set(Calendar.HOUR_OF_DAY, 0);
calendar.set(Calendar.MINUTE, 0);
calendar.set(Calendar.SECOND, 0);
calendar.set(Calendar.MILLISECOND, 0);
calendar.add(Calendar.MONTH, 3);

//Thread unsafe
String datestr=DEFAULTDATEFORMATTER2.format(calendar.getTime());
System.out.println(datestr);
Runtime rt = Runtime.getRuntime();
try {
rt.exec("cmd /C date " + datestr);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}





------解决方案--------------------

            proc = Runtime.getRuntime().exec(command);

            BufferedReader isInfo = proc.getInputStream();
            BufferedReader isError = proc.getErrorStream();


给楼主一种使用方法,A required privilege is not held by the client.这句应该可以在isError中读出来。
------解决方案--------------------
改为: rt.exec("cmd /C start date " + datestr);
------解决方案--------------------
这个应该不能抛异常。
因为你只要有执行cmd的权限,对于程序而言就是正确的。至于你有没有权限修改日期,这是cmd的事。
所以你可以换个思路啊,执行完了之后再次获取时间,验证一下是否修改。