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

我需要一个只能从特定USB闪存驱动器运行的应用程序。 我使用WMI Win32_Diskdrive类和PNPdeviceID属性进行了一些测试。 使用这些数据将应用程序注册到许可证服务器(Web服务)是一个非常好的主意,但我正在寻找第二种方法来重新强制执行此类数据,以使该过程更难破解。

我想在驱动器中创建第二个小隐藏分区,并在其中找到PNPdeviceID或其他信息所支持的串行名称。 接受任何其他想法,方法或建议。

提前致谢。

编辑:我已经知道USB闪存驱动器中的唯一ID,应用程序可以检查Interfacetype属性是否为“USB”。 我在一个支持Web服务的许可证管理器中使用PNPDeviceID的哈希注册应用程序。 我正在寻找另外一种validation方法。

您可以检查卷序列号,它将偶然复制到新格式化的卷,但它不会检测完整的字节精确卷拷贝。
通过访问硬盘序列号来保护软件
任何更快的方法来获得卷序列号?

您可以检查运行程序的驱动器类型:

string path = Process.GetCurrentProcess().MainModule.FileName; FileInfo fileInfo = new FileInfo(path); string driveRoot = fileInfo.Directory.Root.Name; DriveInfo driveInfo = new DriveInfo(driveRoot); if (driveInfo.DriveType != DriveType.Removable) { MessageBox.Show("Must run from removable drive"); Application.Exit(); }