2013-07-31 19 views

回答

3

獲取當前的Windows密碼是不可能的。但是,如果您的JVM在具有管理員權限的用戶帳戶下運行,則可以使用ProcessBuilder類和windows net user命令來重置用戶密碼。

ProcessBuilder pb = new ProcessBuilder("net", "user", "someUsername", "somePassword"); 
Process pro = pb.start(); 

要檢查該命令,從中讀取的結果是錯誤流和由exec方法返回的Process對象的輸入流。

BufferedReader bre = null; 
BufferedReader bri = null; 
try{ 
    bre = new BufferedReader(new InputStreamReader(pro.getErrorStream())); 
    bri = new BufferedReader(new InputStreamReader(pro.getInputStream())); 
    pro.waitFor(); //wait for the command to finish 
    String line; 
    while((line = bre.readLine()) != null) 
     System.out.println(line); 
    while((line = bri.readLine()) != null) 
     System.out.println(line); 
} finally { 
    if(bre != null) 
     bre.close(); 
    if(bri != null) 
     bri.close(); 
} 
+0

[不要使用Runtime#exec](http://www.javaworld.com/jw-12-2000/jw-1229-traps.html?page=1),使用[ProcessBuilder](http ://docs.oracle.com/javase/1.5.0/docs/api/java/lang/ProcessBuilder.html)。另外,您不要閱讀正確的過程輸出,參見[字符流的基本I/O教程](http://docs.oracle.com/javase/tutorial/essential/io/charstreams.html)。你這樣做的方式可能會使進程輸出在緩衝區中未讀。 – linski

+1

已更新。 BufferedReader上的有效點,寫得很快,不知道我在想什麼。並感謝關於Runtime#exec的信息。 – Syon

+0

np,很高興幫助。 upovted。 – linski