[ Jovana_87_Bg @ 05.01.2013. 12:50 ] @
Pronasla sam kod na internetu za citanje ser. broja HDD. Probala sam kod, medjutim javlja se greska:
Code:

private DiskUtils() {} / U ovom redu koda se javlja greska: "invalid method declaration; return type required"


Jel neko zna kako da resim ovaj problem? U koliko neko ima da predlozi neki drugi nacin za citanje ser. broja HDD, ili procesora neka napise. Evo celog koda:

Code:

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package hddserialnumber;
import java.io.File;
import java.io.FileWriter;
import java.io.BufferedReader;
import java.io.InputStreamReader;
/**
 *
 * @author Dejan
 */
public class HDDSerialNumber {
private DiskUtils() {} // RED SA GRESKOM
   public static String getSerialNumber(String drive) {
       
  String result = "";
    try {
      File file = File.createTempFile("realhowto",".vbs");
      file.deleteOnExit();
      FileWriter fw = new java.io.FileWriter(file);

      String vbs = "Set objFSO = CreateObject(\"Scripting.FileSystemObject\")\n"
                  +"Set colDrives = objFSO.Drives\n"
                  +"Set objDrive = colDrives.item(\"" + drive + "\")\n"
                  +"Wscript.Echo objDrive.SerialNumber";  // see note
      fw.write(vbs);
      fw.close();
      Process p = Runtime.getRuntime().exec("cscript //NoLogo " + file.getPath());
      BufferedReader input =
        new BufferedReader
          (new InputStreamReader(p.getInputStream()));
      String line;
      while ((line = input.readLine()) != null) {
         result += line;
      }
      input.close();
    }
    catch(Exception e){
        e.printStackTrace();
    }
    return result.trim();
  }
    public static void main(String[] args) {
    String sn = DiskUtils.getSerialNumber("C");  
    javax.swing.JOptionPane.showConfirmDialog((java.awt.Component)
         null, sn, "Serial Number of C:",
         javax.swing.JOptionPane.DEFAULT_OPTION);
    }
}
[ ByteCode @ 06.01.2013. 11:27 ] @
Klasa ti se nekada zvala DiskUtils a ti si je verovatno promenila da se zove HDDSerialNumber , pa je ono ostatak od predhodne klase. mozes da obrises tu liniju ili da je promenis ime klase u DiskUtils ili ime tog konstruktora u HDDSerialNumber
[ ByteCode @ 06.01.2013. 11:34 ] @
A ovako generalno mogu samo da ti kazem 2 stvari :),
1. To tvoje resenje ce raditi samo na windowsima, nece raditi ni na Mac-u ni na Linuxu.
2. Hakovanje java aplikacija je veoma lako, mnogo lakse nego neki exe fajl. hint (http://javasvet.rs/doc/28/re-bytecode-manipulacija.html ) ili samo pogledas http://commons.apache.org/bcel/ generalno svaku java aplikaciju malo iskusniji java progarmer moze da ohakuje za jedno poslepodne. Ako zelis da to bude bezbedno, jedino resenje je da stavis sve na neki server na internetu, pa da klijenti pristupaju preko web browsera, ili sa druge strane da napravis web servis, a da klijenti zovu iz svoje aplikacije web servis. Sve ostalo je zamlacivanje i preterano gubljenje vremena.