Metro UI アプリでネットワーク インターフェイスの MAC アドレスを取得する必要があります。私の知る限り、これは Metro アプリケーション API の .NET 4.5 ではサポートされていません。私が間違っている?
1376 次
3 に答える
5
言うまでもなく MAC アドレスを取得することはできませんが、ハードウェア固有の情報を取得してマシンを識別することはできます。
この件について説明している msdn の完全な記事は次のとおりです:アプリ固有のハードウェア ID (ASHWID) を使用してデバイスごとのアプリ ロジックを実装するためのガイダンス (Windows)
完全な ID ではなく、必要な情報のみを使用するように注意してください。ID は、ユーザーにとって役に立たない情報 (たとえば、Dock Station バイトなど) に基づいて変更される可能性があるためです。
以下は、数バイト (CPU ID、メモリのサイズ、ディスク デバイスのシリアル番号、および BIOS) に基づいて計算されたデバイス ID のコード サンプルです。
string deviceSerial = string.Empty;
// http://msdn.microsoft.com/en-us/library/windows/apps/jj553431
Windows.System.Profile.HardwareToken hardwareToken = Windows.System.Profile.HardwareIdentification.GetPackageSpecificToken(null);
using (DataReader dataReader = DataReader.FromBuffer(hardwareToken.Id))
{
int offset = 0;
while (offset < hardwareToken.Id.Length)
{
byte[] hardwareEntry = new byte[4];
dataReader.ReadBytes(hardwareEntry);
// CPU ID of the processor || Size of the memory || Serial number of the disk device || BIOS
if ((hardwareEntry[0] == 1 || hardwareEntry[0] == 2 || hardwareEntry[0] == 3 || hardwareEntry[0] == 9) && hardwareEntry[1] == 0)
{
if (!string.IsNullOrEmpty(deviceSerial))
{
deviceSerial += "|";
}
deviceSerial += string.Format("{0}.{1}", hardwareEntry[2], hardwareEntry[3]);
}
offset += 4;
}
}
Debug.WriteLine("deviceSerial=" + deviceSerial);
于 2012-11-23T08:57:10.817 に答える
0
Metro Styleアプリケーションから低レベルのネットワーク情報にアクセスすることは制限されているため、ストックSDKではこれを行うことはできません。これは仕様によるものです。
于 2012-07-28T04:56:41.127 に答える
-3
private void getDeviceInfos()
{
Profiles = Windows.Networking.Connectivity.NetworkInformation.GetConnectionProfiles();
Adapter = Profiles[0].NetworkAdapter;
Guid AdapterId = Adapter.NetworkAdapterId;
}
IReadOnlyList<Windows.Networking.Connectivity.ConnectionProfile> Profiles;
Windows.Networking.Connectivity.NetworkAdapter Adapter;
于 2012-09-16T23:42:15.177 に答える