2009-08-28 50 views

回答

3

「簽名」屬性是在Windows XP中引入的,用於用作共享羣集磁盤的磁盤。根據我的理解,它是在磁盤第一次連接到Windows系統時創建的,即使磁盤通過另一個控制器連接(或者在羣集場景中,即使通過另一臺計算機)也不會更改。

有關詳細說明,請參閱MSDN: 創建物理磁盤資源 http://msdn.microsoft.com/en-us/library/aa369328(VS.85).aspx

+0

如果用戶重新安裝操作系統?操作系統是否生成相同的簽名? – mrtaikandi 2009-08-28 13:41:33

+1

在我的理解中,簽名從未再次被觸及,如果之前生成的話。因爲即使在重新安裝一個Cluser節點的情況下,羣集磁盤也必須在所有訪問同一磁盤的計算機上保持相同的身份。 – Mischa 2009-08-28 15:28:33

0

我拿硬盤到另一臺機器,並簽名和PNPDeviceID改變。所以我認爲OS生成這個簽名。

1

我可以通過提供一些關於「Win32_DiskDrive WMI class」的重要細節來幫助您。

將以下代碼複製到您的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 
0

我認爲兩條評論對於遵循此路徑的任何人都非常重要。