每一个硬盘分区都有一个逻辑序列号,这个可以使用API函数:GetVolumeInformation来读取。
我现在的问题是:这个逻辑序列号在什么情况下会变更?
1、格式化后?
2、重装系统后?
3、重新分区后?以及有什么办法可以编程设置这个序列号?以及会带来什么不好的影响否?

解决方案 »

  1.   

    http://www.xboxharddrive.com/freeware.html
      

  2.   

    这个到windows专区问应该更多的人知道吧
      

  3.   

    物理的不行····现在读取物理的,很多是空的····
    我前段时间也经常 找什么东西来判断机器唯一性后来放弃物理硬盘序列号,在很多用户返回的数据中,空序列号占了大部分!格式化,磁盘序列号会变如果是GHOST直接还原,不会变哦,我专门测试过了
      

  4.   

    1、格式化后 
    3、重新分区后原来可以读 "不会变" 的物理序列号 但现在不行啦 因多家硬盘制造厂不玩这个啦改用 CPU序列号吧 再变也可能是几年以后的事吧.
      

  5.   

    CPU 序列号不是早就被“声讨”,已经关闭了吗?不知道 BIOS 里有没有‘全球唯一’的信息呢?
      

  6.   


    1、格式化后
    -----------fso或API
    没有什么不好的影响
      

  7.   

    我来回答正题
    1、格式化后?
    格式化了哪个盘,那这个盘的逻辑序列号会改变。2、重装系统后?
    参考第一条,一般只会改变C盘的逻辑序列号。3、重新分区后?
    参考第一条,那就是所有盘的逻辑序列号都改变了。使用WMI可以方便得到计算机硬件的详细信息,引用gakusei的例子    MsgValue = ""
        Set objWMIService = GetObject("winmgmts:\\.\root\cimv2")
        '获取硬盘序列号
        Set colItems = objWMIService.ExecQuery("SELECT * FROM Win32_PhysicalMedia", , 48)
        For Each objItem In colItems
            MsgValue = MsgValue & vbCrLf & "硬盘 = " & objItem.SerialNumber
        Next
        '获取主板序列号
        Set colItems = objWMIService.ExecQuery("Select * from Win32_BaseBoard", , 48)
        For Each objItem In colItems
            MsgValue = MsgValue & vbCrLf & "主板=" & objItem.SerialNumber
        Next
        '获取CPU ID
        Set colItems = objWMIService.ExecQuery("Select * from Win32_Processor", , 48)
        For Each objItem In colItems
            MsgValue = MsgValue & vbCrLf & "CPU = " & objItem.ProcessorId
        Next
        '获取BIOS序列号
        Set colItems = objWMIService.ExecQuery("Select * from Win32_BIOS", , 48)
        For Each objItem In colItems
            MsgValue = MsgValue & vbCrLf & "BIOS= " & objItem.SerialNumber
        Next
        '获取网卡MAC地址
        Set colItems = objWMIService.ExecQuery("SELECT MACAddress FROM Win32_NetworkAdapter WHERE ((MACAddress Is Not NULL) AND (Manufacturer <> 'Microsoft'))", , 48)
        For Each objItem In colItems
            MsgValue = MsgValue & vbCrLf & "网卡 = " & objItem.MACAddress
        Next
        Wscript.Echo MsgValue
      

  8.   

    重装系统应该不会改变卷标号吧。除非象 11F 说的那样,你用 GHOST镜像 还原的,把系统盘的卷标号改变了。
      

  9.   

    似乎也可以直接调用API修改
    SetVolumeInformation