如何正确识别计算机中的物理驱动器和分区?我尝试过使用GetVolumeInformation中的VOLUME序列号,看到它返回NUMBER而不是字母数字值,我感到很震惊?
[DllImport("Kernel32.dll", SetLastError = true)]
extern static bool GetVolumeInformation(string vol, StringBuilder name, int nameSize, out uint serialNum, out uint maxNameLen, out uint flags, StringBuilder fileSysName, int fileSysNameSize);
我需要知道USB拇指驱动器或CD或DVD或硬盘驱动器在连接到其他计算机时是相同的物理设备。我还需要知道,即使用户重命名或更改驱动器号,分区或卷也是相同的。
答案 0 :(得分:1)
它还应该返回什么?它只是文件系统格式化时分配的32位数字。
如果您希望将其格式化为dir
返回的格式,请使用
serialNumber.ToString("X8");
答案 1 :(得分:1)
你混淆了两件不同的事情。文档说:
lpVolumeSerialNumber [out,optional]
此函数返回格式化硬盘时操作系统分配的卷序列号。
因此,这是 OS分配的序列号。它分配了它,我确信它知道返回它的正确格式。
接着说:
要以编程方式获取制造商分配的的硬盘序列号,请使用Windows Management Instrumentation(WMI)Win32_PhysicalMedia属性SerialNumber。