1

既知の USB フラッシュ ドライブからのみ実行できる MFC アプリケーションを作成したいと考えています。別の場所にコピーすると実行されません。ここでこのような質問を見つけましたが 、よくわかりません。ヒントを教えてください。

4

1 に答える 1

2

MFC では: GetFileInformationByHandle

 BY_HANDLE_FILE_INFORMATION info;
DWORD dwSerialNumber = 0;

if(GetFileInformationByHandle(FileHandle, &info) != 0)
{
    dwSerialNumber = info.dwVolumeSerialNumber;
    swprintf(szTemp, L"The Volume Serial Number = %d", info.dwVolumeSerialNumber);
    MessageBox(NULL, szTemp, L"Success", MB_OK);
}
else
{
    swprintf(szTemp, L"GetFileInformationByHandle Error = %d", GetLastError());
    MessageBox(NULL, szTemp, L"Success", MB_OK);
}

C#/C++.NET の場合: USB ドライブの内部シリアル番号である WMI を使用します。

このコードを試してみてください。シリアル番号がない場合は、一部の USB フラッシュ ドライブにシリアル番号がある場合とない場合があります。

//import the System.Management namespace at the top in your "using" statement. Then in a method, or on a button click:

ManagementObjectSearch theSearcher = new ManagementObjectSearcher("SELECT * FROM Win32_DiskDrive WHERE InterfaceType='USB'");
foreach (ManagementObject currentObject in theSearcher.Get())
{
   ManagementObject theSerialNumberObjectQuery = new ManagementObject("Win32_PhysicalMedia.Tag='" + currentObject["DeviceID"] + "'");
   MessageBox.Show(theSerialNumberObjectQuery["SerialNumber"].ToString());
}
于 2012-05-03T13:48:37.953 に答える