如何限制 MFC 应用程序仅从已知的 USB 闪存驱动器运行

How to Restrict MFC Application to run only from a known USB flash drive

本文关键字:USB 闪存 驱动器 运行 MFC 何限制 应用程序      更新时间:2023-10-16

我想制作一个只能从已知的USB闪存驱动器运行的MFC应用程序。如果我们复制到其他地方,则不应运行它。我在这里发现了这样的问题但我真的不明白。请给我一个提示。

在 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 驱动器的内部序列号。

尝试代码,如果没有序列号,则有些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());
}