当前位置: 首页 > 面试题库 >

如何使用Java获取硬盘序列号?

孙弘博
2023-03-14
问题内容

如何使用Java获取硬盘的序列号?


问题答案:

该序列号是由操作系统在格式化驱动器时创建的,而不是制造商的序列号。它是唯一的,因为它是根据当前时间信息动态创建的。AFAIK,没有返回制造商SN的API。充其量,可以读取高清固件的序列号,但这将涉及一些非常底层的API调用。请记住,即使您获得该编号,也无法保证该编号是唯一的,因为每个制造商都可以根据需要分配编号。

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);
  }
}


 类似资料:
  • 问题内容: 我怎样才能得到一个的使用驱动器上? 我想使用Python模块来执行此操作,而不是运行诸如的外部程序。也许使用模块? 问题答案: 如您所建议,fcntl是在Linux上执行此操作的方法。您要转换的C代码如下所示: 在Ubuntu 9.10上将其翻译成Python,它有点像这样: 抱歉,我将原始的C结构作为注释包含在内非常有用。另外,我对和模块都还很陌生,所以我可能正在做一些单调的事情。无

  • 引用 DriveList.nsi 的内容: !include MUI2.nsh !include FileFunc.nsh !include WordFunc.nsh Name "DriveList" OutFile "DriveList.exe" Var DISK_LIST Var PART_LIST Var REFRESHBTN1 Var REFRESHBTN2 Var PriPtNum

  • 本文向大家介绍C#利用win32 Api 修改本地系统时间、获取硬盘序列号,包括了C#利用win32 Api 修改本地系统时间、获取硬盘序列号的使用技巧和注意事项,需要的朋友参考一下 C#利用win32 Api 修改本地系统时间、获取硬盘序列号,可以用于软件注册机制的编写! 以上就是本文所分享的代码的全部内容了,希望对大家学习C#能有所帮助。

  • 本文向大家介绍C#实现读取指定盘符硬盘序列号的方法,包括了C#实现读取指定盘符硬盘序列号的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了C#实现读取指定盘符硬盘序列号的方法。分享给大家供大家参考,具体如下: 更多关于C#相关内容感兴趣的读者可查看本站专题:《C#窗体操作技巧汇总》、《C#常见控件用法教程》、《WinForm控件用法总结》、《C#程序设计之线程使用技巧总结》、《C#操作

  • 问题内容: 有谁知道在Java中向硬盘驱动器发出命令的方法吗?Java甚至支持这种硬件交互吗? 例如,如果我有一个要查询的SCSI硬盘驱动器,是否有一个预先存在的Java方法可以执行此操作,还是我必须编写自己的方法? 如果您不熟悉,http://en.wikipedia.org/wiki/SCSI提供了有关SCSI命令的一些常规信息。 问题答案: Java不支持直接与此类硬件对话。但是,您可以使用

  • 硬盘回收站用于存放用户删除的硬盘文件。 回收站中主机和硬盘文件默认保存3天,如有误删除的主机或硬盘文件需要在3天内进行恢复操作,可以将其恢复到原来位置,超过3天后,文件将被彻底删除。 入口:在云管平台单击左上角导航菜单,在弹出的左侧菜单栏中单击 “主机/回收站/硬盘” 菜单项,进入硬盘回收站列表。 清除 当确定回收站中的硬盘文件无用后,可使用清除功能立即彻底删除文件。 清除单个硬盘 单击 “清除”