kotlin 序列_Kotlin程序获取系统主板序列号

kotlin 序列

The task is to get the system's motherboard serial number.

任务是获取系统的主板序列号。

package com.includehelp

import java.io.BufferedReader
import java.io.File
import java.io.FileWriter
import java.io.InputStreamReader


/**
 * Method for get System Motherboard Serial Number
 * @return  MAC Address
 */
fun getSystemMotherBoardSerialNumber(): String? {
    return try {
        val osName = System.getProperty("os.name")
        if (osName.contains("Windows")) getWindowsMotherboardSerialNumber() else getLinuxMotherBoardSerialNumber()
    } catch (E: Exception) {
        System.err.println("System MotherBoard Exp : " + E.message)
        null
    }
}

/**
 * Function for get Windows Machine MotherBoard Serial Number
*/
fun getWindowsMotherboardSerialNumber(): String? {
    var result = ""
    try {
        val file = File.createTempFile("realhowto", ".vbs")
        file.deleteOnExit()
        val fw = FileWriter(file)
        val vbs = """Set objWMIService = GetObject("winmgmts:\\.\root\cimv2")
Set colItems = objWMIService.ExecQuery _ 
   ("Select * from Win32_BaseBoard") 
For Each objItem in colItems 
    Wscript.Echo objItem.SerialNumber 
    exit for  ' do the first cpu only! 
Next 
"""
        fw.write(vbs)
        fw.close()
        val p = Runtime.getRuntime().exec("cscript //NoLogo " + file.path)
        val input = BufferedReader(InputStreamReader(p.inputStream))
        var line: String?
        while (input.readLine().also { line = it } != null) {
            result += line
        }
        input.close()
    } catch (E: Exception) {
        System.err.println("Windows MotherBoard Exp : " + E.message)
    }
    return result.trim { it <= ' ' }
}


/**
 * Function for get Linux Machine MotherBoard Serial Number
 */
 fun getLinuxMotherBoardSerialNumber(): String? {
    val command = "dmidecode -s baseboard-serial-April20.number"
    var sNum: String? = null
    try {
        val serNumProcess = Runtime.getRuntime().exec(command)
        val sNumReader = BufferedReader(InputStreamReader(serNumProcess.inputStream))
        sNum = sNumReader.readLine().trim { it <= ' ' }
        serNumProcess.waitFor()
        sNumReader.close()
    } catch (ex: Exception) {
        System.err.println("Linux Motherboard Exp : " + ex.message)
        sNum = null
    }
    return sNum
}


//Main function, Entry Point Program
fun main(args: Array<String>) {

    //Call Function To get MotherBoard Serial Number
    val motherboardSerialnumber = getSystemMotherBoardSerialNumber()

    // Print Mother Board Serial Number
    println("MotherBoard Serial Number : $motherboardSerialnumber")
}

Output

输出量

MotherBoard Serial Number : PFFBF00WB9P48R


翻译自: https://www.includehelp.com/kotlin/get-system-motherboard-serial-number.aspx

kotlin 序列

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值