4

WMIにクエリを実行することで、物理ドライブのCPU識別子とボリュームシリアル番号を取得できることは承知していますが、WMIは通常時間がかかります。この情報を取得するために利用できる他のより高速なオプションはありますか?これを実現するWin32APIはありますか?

編集:明確にさせてください。CPU識別子によって、次のWMIインスタンスプロパティをクエリすることで得られるのと同じ値を参照しています。

  • Win32_Processor :: ProcessorId
  • Win32_LogicalDisk :: VolumeSerialNumber
4

4 に答える 4

2

WMIは、実際にはデータのかなりの部分をレジストリから取得します。システムはシステムに関する多くの情報をそこに保存し、明らかに非常に迅速に応答します。

ライセンス上の理由でマザーボード、CPU、HDDをロックする場合は、次の値を確認してください
。HKLM \ HARDWARE \ DESCRIPTION \ System \ BIOS \ BaseBoardManufacturer
HKLM \ HARDWARE \ DESCRIPTION \ System \ BIOS \ BaseBoardProduct
HKLM \ HARDWARE \ DESCRIPTION \ System \ CentralProcessor \ 0 \ Identifier
HKLM \ HARDWARE \ DESCRIPTION \ System \ CentralProcessor \ 0 \ ProcessorNameString
HKLM \ SOFTWARE \ Microsoft \ Windows NT \ CurrentVersion \ DigitalProductId
HKLM \ SOFTWARE \ Microsoft \ Windows NT \ CurrentVersion \ ProductId
HKLM \ SOFTWARE \ Microsoft \ Windows NT \ CurrentVersion \ BuildLabEx
HKLM \ HARDWARE \ DESCRIPTION \ System \ MultifunctionAdapter \ 0 \ DiskController \ 0 \ DiskPeripheral \ 0
(RAIDが使用されているボードに固有の場合があります)

WMIなしでディスクシリアルを取得する場合は、物理ドライブデバイスに対してDeviceIoControl呼び出しを発行します。VB.NETのサンプルコード:http ://www.dreamincode.net/code/snippet429.htm

于 2011-02-16T21:48:53.017 に答える
2

ただし、CPUについては不明ですが、ドライブ情報についてWindowsレジストリを照会できます。あなたの質問はこの SO q/a で対処されているようです (この情報を取得するためのいくつかの方法を示していますが、速度のために、おそらくレジストリから取得するのが最善の策です):

物理ディスクを一覧表示する方法は?

于 2009-05-12T19:18:46.130 に答える
2

CPU の ID は常に利用できるとは限らないことに注意してください。

ところで、あなたは何を達成しようとしていますか?コンピューター インスタンスの一意のキーを生成する場合は、Codeproject の Sowkot Osman によるライセンス目的のコンピューターの一意のキー (フィンガー プリント)の生成の投稿を確認してください。いくつかのヒントを得ることができます (コメントも読んでください)。

于 2009-05-11T23:44:41.367 に答える
-2

GetSystemInfoは好きですが、物理ドライブは対象外です。

于 2008-10-29T21:16:45.597 に答える