我想制作一个只能从已知 USB 闪存驱动器运行的 MFC 应用程序。如果我们复制到其他地方,它不应该运行。我在这里发现了类似的问题, 但我不太明白。请给我一个提示。
问问题
648 次
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 中:使用 WMI 的 USB 驱动器的内部序列号。
试试这个代码,如果没有序列号,那是因为有些U盘有,有些没有。
//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 回答