4

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

我正在考虑在驱动器中创建第二个小隐藏分区,并将其定位为 PNPdeviceID 或其他信息获得的序列名称。接受任何其他想法、方法或建议。

提前致谢。

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

4

2 回答 2

1

您可以检查卷序列号,这将捕获随意复制到新格式化的卷,但它不会检测到完整字节精确的卷副本。
通过访问硬盘序列号来保护软件 有
更快的方法来获取卷序列号吗?

于 2009-08-19T23:04:28.090 回答
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();
}
于 2009-08-19T23:13:46.323 回答