java로 하드 디스크의 일련 번호를 얻으려면 어떻게해야합니까?java를 사용하여 하드 디스크 일련 번호를 얻는 방법은 무엇입니까?
답변
드라이브를 포맷하는 곳 일련 번호는 OS에 의해 생성 할 수 있으며 제조업체 일련 번호가 아니다. 현재 시간 정보를 기반으로 즉석에서 만들어지기 때문에 독특합니다. AFAIK, 제조업체 SN을 반환하는 API는 없습니다. 기껏해야 HD 펌웨어의 SN을 읽을 수는 있지만 매우 낮은 수준의 API 호출이 포함됩니다. 이 번호를 얻더라도 각 제조업체가 원하는대로 SN을 할당 할 수 있으므로 고유하다는 보장은 없습니다.
import java.io.File;
import java.io.FileWriter;
import java.io.BufferedReader;
import java.io.InputStreamReader;
public class DiskUtils {
private DiskUtils() { }
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);
}
}
1. 처음에는 그 사람이 파티션 하나가 아닌 하드 디스크 일련 번호를 묻습니다. 2.둘째로, 내 Win7 시스템 + Java 7 (심지어 Visual Basic Script를 격리하고 실행했는데 여전히 잘못되었습니다.)에서 부정적인 결과를 얻었으므로 코드가 올바르게 작동하지 않습니다. – Alex
@Alex 저는 여러분이 우리보다 더 천재라고 생각합니다 ... 누군가가 대답을 수락하면 그 사람이 그 사람을 위해 일했음을 알게 될 것입니다 ... 먼저 대답 정의를 읽은 다음 downvote를 읽으십시오. 내가 알 겠어? –
제 답변이 잘못되어 있다면 설명해주십시오. 그러나 아이러니 컬하게 의견을 말하지 마십시오. 옆에 나는 나의 이전의 의견 (내가 전체의 물건을 다시 읽었던 것에 따라)과 나의 downvote를 간직한다. – Alex
C 또는 C++에서이 기능을 구현하고 JNI를 사용하여 Java에서 액세스해야한다고 생각합니다.
Java는 하드 드라이브가없는 가상 컴퓨터에서 파일 및 파일 시스템 만 실행합니다. Java에서 approriate 명령 행 유틸리티를 실행하여이 정보를 얻을 수 있어야합니다.
한 리눅스는
hdparm -i /dev/hda
당신이 Win7에의 SP1 이상 인 Windows OS를 사용하는 경우, 당신은 단순히 WMIC를 통해, 자바 프로그램에서 다음 cmd를 명령을 실행하여 얻을 수 있습니다.
wmic diskdrive get serialnumber
이 명령 반환 "잘못된 XML 내용.는"당신이 here에 설명 된대로 핫픽스 파일을 적용하고 싶어 할 수 있습니다 경우
.좋은 소식 FileStore 개체에 대한 volume:vsn
특성이 있습니다. 그들은 WindowsFileStore jdk8u source, 말
for (FileStore store: FileSystems.getDefault().getFileStores()) {
System.out.format("%-20s vsn:%s\n", store, store.getAttribute("volume:vsn"));
}
출력은 int 형처럼 보인다 (예를 들어 -1037833820
, 194154
)
나쁜 소식은 테스트 목적으로에 대한 창 다릅니다. 미래에 다른 플랫폼에서도 작동 할 수 있습니다.
다른 옵션 (JNI, 실행 및 구문 분석 CLI)도 시스템에 따라 다릅니다. 좀 더 자세하지만 런타임을 변경할 때 갑자기 중단되지 않을 수도 있습니다. 그러나 나는 속성 솔루션이 훨씬 더 간단하다고 생각합니다.
윈도우 머신에 당신은 당신이 WMI를 사용하여 Windows 용
public static String getSerialKey(Character letter) throws Exception{
String line = null;
String serial = null;
Process process = Runtime.getRuntime().exec("cmd /c vol "+letter+":");
BufferedReader in = new BufferedReader(
new InputStreamReader(process.getInputStream()));
while ((line = in.readLine()) != null) {
if(line.toLowerCase().contains("serial number")){
String[] strings = line.split(" ");
serial = strings[strings.length-1];
}
}
in.close();
return serial;
}
- 1. 하드 드라이브의 일련 번호를 얻는 방법
- 2. Java를 사용하여 하드 디스크의 RAM 크기와 크기를 얻는 방법은 무엇입니까?
- 3. WMI없이 HDD 일련 번호를 얻는 방법은 무엇입니까?
- 4. 모니터 일련 번호를 얻는 방법은 무엇입니까?
- 5. 기계의 일련 번호를 얻는 방법
- 6. PHP 또는 Java를 사용하여 하드 디스크 크기를 얻을 수 있습니까?
- 7. 실행 파일에 일련 번호를 기록하는 방법은 무엇입니까?
- 8. .NET에서 하드 디스크 에뮬레이트
- 9. 권장 예비 하드 디스크 공간
- 10. 플래시 장치의 고유 일련 번호를 찾는 방법은 무엇입니까?
- 11. 하드 디스크 읽기 성능 문제
- 12. SharpSVN에서 최신 개정 번호를 얻는 방법은 무엇입니까?
- 13. 부트 로더에서 일련 번호를 잡으십시오.
- 14. Windows 용 Mono를 사용하여 WMI에 액세스하여 하드웨어 ID를 얻는 방법은 무엇입니까?
- 15. 행 수에 따라 DataGrid의 일련 번호를 생성하는 방법은 무엇입니까?
- 16. Windows 모바일, ID 및 일련 번호를 얻는 방법?
- 17. 부트 스트랩 하드 디스크 액세스
- 18. 파일 (하드 디스크) I/O의 특성을 측정하는 방법은 무엇입니까?
- 19. 시스템에서 두 개의 드라이브가있는 경우 - 하드 디스크 번호 받기 - VC++
- 20. 플라스크에서 현재 포트 번호를 얻는 방법은 무엇입니까?
- 21. C#에서 하드 디스크 SerialNumber를 얻는 방법 (WMI 없음)?
- 22. Java를 사용하여 클라이언트의 LAN IP를 얻는 방법은 무엇입니까?
- 23. Java를 사용하여 LAN에 연결된 모든 시스템 이름을 얻는 방법은 무엇입니까?
- 24. Java를 사용하여 글로벌 활성 창의 이름을 얻는 방법은 무엇입니까?
- 25. 마더 보드 슬롯 수를 계산하고 자바를 통해 마더 보드 일련 번호를 얻는 방법은 무엇입니까?
- 26. PHP로 연도 번호를 얻는 방법은 무엇입니까?
- 27. 프로그램에서 에뮬레이터 포트 번호를 얻는 방법은 무엇입니까?
- 28. J2ME에서 연락 전화 번호를 얻는 방법은 무엇입니까?
- 29. 테이블에서 최신 ID 번호를 얻는 방법은 무엇입니까?
- 30. Entity Framework를 사용하여 DB2에서 다음 순차 번호를 얻는 방법은 무엇입니까?
을 사용할 수 있습니다. –
BTW - 사람들이 소프트웨어를 훔치는 것을 막기 위해이 작업을 수행하면 '이미 잃어버린 것'입니다. –
@thompson 그 의견이 무엇을 의미합니까? – developer