硬盘的逻辑序列号在什么情况下会变更?!

贝隆 2010-01-08 12:46:28
每一个硬盘分区都有一个逻辑序列号,这个可以使用API函数:GetVolumeInformation来读取。
我现在的问题是:这个逻辑序列号在什么情况下会变更?
1、格式化后?
2、重装系统后?
3、重新分区后?

以及有什么办法可以编程设置这个序列号?以及会带来什么不好的影响否?

...全文
1449 34 打赏 收藏 转发到动态 举报
写回复
用AI写文章
34 条回复
切换为时间正序
请发表友善的回复…
发表回复
NHGIGGS 2010-02-06
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 veron_04 的回复:]
貌似读取硬盘物理序列号不同的硬盘不一样。而且有些盘不行。

[/Quote]

硬盘的逻辑序列号是可变更的,只有物理序列号才是唯一的,不变的。

我不知道你读取硬盘序列号的目的是不是为了推算软件注册码。

如果是的话,建议你还是通过获取物理序列号码比较稳妥!
NHGIGGS 2010-02-06
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 ybh37 的回复:]
硬盘分区表发生修改操作!
[/Quote]

同意!
贝隆 2010-02-02
  • 打赏
  • 举报
回复
[Quote=引用 29 楼 deedle 的回复:]
似乎也可以直接调用API修改
SetVolumeInformation

[/Quote]
貌似修改后会带来负面影响
无·法 2010-02-01
  • 打赏
  • 举报
回复
我用过一段获取硬盘序列号的代码,还可以啊,很少机器获取的是空的
linc_M 2010-02-01
  • 打赏
  • 举报
回复
up上
deedle 2010-01-31
  • 打赏
  • 举报
回复
似乎也可以直接调用API修改
SetVolumeInformation
hehaiyi2008 2010-01-29
  • 打赏
  • 举报
回复
1、格式化后
3、重新分区后
东方之珠 2010-01-29
  • 打赏
  • 举报
回复
up
熊孩子开学喽 2010-01-23
  • 打赏
  • 举报
回复
[Quote=引用 22 楼 stayor 的回复:]
引用 21 楼 wallescai 的回复:
格式化后会改变
但是如果格式化成和之前的分区一样,取得的序列号也会和之前一样


好像不对哦。
[/Quote]

我确实遇到过这个问题,因为曾经写了个软件用硬盘序列号作注册码,结果发现格式化之后注册码没变化,不知道这算是个案还是普遍现象
舉杯邀明月 2010-01-21
  • 打赏
  • 举报
回复
[Quote=引用 19 楼 liguicd 的回复:]
..........

2、重装系统后?
参考第一条,一般只会改变C盘的逻辑序列号。

...........


[/Quote]
重装系统应该不会改变卷标号吧。

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

东方之珠 2010-01-21
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 chen8013 的回复:]
1 和 3 。

[/Quote]


正确
stayor 2010-01-21
  • 打赏
  • 举报
回复
[Quote=引用 21 楼 wallescai 的回复:]
格式化后会改变
但是如果格式化成和之前的分区一样,取得的序列号也会和之前一样
[/Quote]

好像不对哦。
熊孩子开学喽 2010-01-21
  • 打赏
  • 举报
回复
格式化后会改变
但是如果格式化成和之前的分区一样,取得的序列号也会和之前一样
liguicd 2010-01-18
  • 打赏
  • 举报
回复
我来回答正题
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
贝隆 2010-01-18
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 lyserver 的回复:]
引用 13 楼 myjian 的回复:
逻辑序列号可以直接更改.

这样就能"量产"你的注册版软件了:)

记得曾经有个软件就是这样,让人量产了:)

不是让某某马给量产了吧?
[/Quote]
确实。。。。
hehaiyi2008 2010-01-12
  • 打赏
  • 举报
回复
格式化和重新分区后,都会有变化。
lyserver 2010-01-12
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 myjian 的回复:]
逻辑序列号可以直接更改.

这样就能"量产"你的注册版软件了:)

记得曾经有个软件就是这样,让人量产了:)
[/Quote]
不是让某某马给量产了吧?
chinaboyzyq 2010-01-12
  • 打赏
  • 举报
回复
[Quote=引用楼主 veron_04 的回复:]
每一个硬盘分区都有一个逻辑序列号,这个可以使用API函数:GetVolumeInformation来读取。
我现在的问题是:这个逻辑序列号在什么情况下会变更?
1、格式化后?
2、重装系统后?
3、重新分区后?

以及有什么办法可以编程设置这个序列号?以及会带来什么不好的影响否?


[/Quote]

1、格式化后
-----------

fso或API
没有什么不好的影响
舉杯邀明月 2010-01-09
  • 打赏
  • 举报
回复
CPU 序列号不是早就被“声讨”,已经关闭了吗?

不知道 BIOS 里有没有‘全球唯一’的信息呢?
  • 打赏
  • 举报
回复
http://www.xboxharddrive.com/freeware.html
加载更多回复(12)

7,763

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧