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

时间:2009-08-19 22:45:28

标签: c# security wmi usb-drive

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

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

提前致谢。

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

2 个答案:

答案 0 :(得分:1)

您可以检查卷序列号,它会随意复制到新格式化的卷,但不会检测完整的字节精确卷拷贝。
To protect software by accessing harddisk serial no
Any faster method to get Volume Serial number?

答案 1 :(得分:1)

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

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();
}