3

マシンの一意の ID の生成に関する質問が既に寄せられていることは知っていますが、私の質問は少し異なります。

ハードウェア情報を取得し、WMI を使用しない他の方法 (API 呼び出し?) があるかどうかを知りたいです。WMI はWin2000で導入されたため、Win98 では使用できないようです。Win98 でも実行しなければならないアプリケーションを持っています (それがひどいのはわかっていますが、何ができますか?) それでもハードウェア情報を取得できます。

4

3 に答える 3

3

私はこれをライセンスプロジェクトのために数回行いました。ハードドライブのシリアル番号は次のように使用します。

private static extern long GetVolumeInformation(string PathName, StringBuilder VolumeNameBuffer, UInt32 VolumeNameSize, ref UInt32 VolumeSerialNumber, ref UInt32 MaximumComponentLength, ref UInt32 FileSystemFlags, StringBuilder FileSystemNameBuffer, UInt32 FileSystemNameSize);

VolumeSerialNumber関数によって返されるを使用します。

また、Windows製品ID(にありますHKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\DigitalProductId)の使用を検討したかもしれません。多くのWindowsXPユーザーがコピーを海賊版にし、同じプロダクトキーを共有していることに注意してください。

于 2009-05-16T13:22:07.427 に答える
2

一意のキーを作成するために、さまざまなハードウェア情報を組み合わせることができます。

たとえば、CPU ID、MAC アドレスなどです。それらを取得し、結合し、暗号化すると、このマシンのハードウェア設定を一意に表現できます。

件名についてグーグルで検索してみてください:ハードウェア情報の読み取り方法。

私が見ることができるものから、CodeProject には非常に役立つ投稿があります: How To Get Hardware Information (CPU ID, MainBoard Info, Hard Disk Serial, System Information , ...)

于 2009-05-16T13:10:52.587 に答える
1

WinAPIのkernel32およびuser32ライブラリに目を通します。、、、、などEnumDisplayDevicesのあらゆる種類の機能があります。C#ラッパーコードが提供されるため、 PInvokeを使用してAPIを参照するのが好きですが、MSDNにはWindowsSDKにもすべて含まれています。GetLogicalDrivesGlobalMemoryStatusGetVolumeInformation

ハードドライブのシリアルに関する@novatrustの答えは良いものですが、それ以上のものと組み合わせることができます。GetVolumeInformation上記のpinvokeへのAPIリンクを提供しましたが、単純なGoogleでも機能するはずです。

于 2009-05-16T13:21:51.233 に答える