有人知道Win32_DiskDrive WMI类的Signature属性是什么吗? 它是唯一的还是用户可以像磁盘卷序列号一样更改它?
感谢。
答案 0 :(得分:3)
“签名”属性是随Windows XP引入的,用于用作共享群集磁盘的磁盘。根据我的理解,它是在磁盘第一次连接到Windows系统时创建的,即使磁盘通过另一个控制器连接(或者在集群场景中,甚至通过另一台计算机连接)也不会更改。
有关详细说明,请参阅MSDN: 创建物理磁盘资源 http://msdn.microsoft.com/en-us/library/aa369328(VS.85).aspx
答案 1 :(得分:1)
我可以通过提供有关“Win32_DiskDrive WMI类”的一些重要细节来帮助您。
将以下代码复制到您的c#项目中。
public static string HardDiskID()
{
ManagementClass partionsClass = new ManagementClass("Win32_DiskDrive");
ManagementObjectCollection partions = partionsClass.GetInstances();
string hdd = string.Empty;
foreach (ManagementObject partion in partions)
{
hdd = Convert.ToString(partion["SerialNumber"]);
if (hdd != string.Empty)
return hdd;
}
return hdd;
}
注意 - 上面代码的“SerialNumber”字符串可以替换为以下任何硬盘属性。
uint16 Availability;
uint32 BytesPerSector;
uint16 Capabilities[];
string CapabilityDescriptions[];
string Caption;
string CompressionMethod;
uint32 ConfigManagerErrorCode;
boolean ConfigManagerUserConfig;
string CreationClassName;
uint64 DefaultBlockSize;
string Description;
string DeviceID;
boolean ErrorCleared;
string ErrorDescription;
string ErrorMethodology;
string FirmwareRevision;
uint32 Index;
datetime InstallDate;
string InterfaceType;
uint32 LastErrorCode;
string Manufacturer;
uint64 MaxBlockSize;
uint64 MaxMediaSize;
boolean MediaLoaded;
string MediaType;
uint64 MinBlockSize;
string Model;
string Name;
boolean NeedsCleaning;
uint32 NumberOfMediaSupported;
uint32 Partitions;
string PNPDeviceID;
uint16 PowerManagementCapabilities[];
boolean PowerManagementSupported;
uint32 SCSIBus;
uint16 SCSILogicalUnit;
uint16 SCSIPort;
uint16 SCSITargetId;
uint32 SectorsPerTrack;
string SerialNumber;
uint32 Signature;
uint64 Size;
string Status;
uint16 StatusInfo;
string SystemCreationClassName;
string SystemName;
uint64 TotalCylinders;
uint32 TotalHeads;
uint64 TotalSectors;
uint64 TotalTracks;
uint32 TracksPerCylinder
答案 2 :(得分:0)
我将HDD带到另一台机器并且Signature和PNPDeviceID已更改。所以我认为OS会生成这个签名。
答案 3 :(得分:0)
我认为两条评论对于遵循这条道路的人来说非常重要。