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

发布于 2024-08-01 22:20:48 字数 449 浏览 3 评论 0原文

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

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

提前致谢。

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

I need an application to run only from a specific USB flash drive. I made some test with the WMI Win32_Diskdrive class and the PNPdeviceID property. It is a very good idea to enroll the application into a license server (web services) with this data, but I'm searching for a second method to reenforce this one in order to make the process harder to break.

I was thinking to create a second little hidden partition in the drive and locate in it as a name the serial obteined by the PNPdeviceID or other information. Any other idea, method or suggestion is accepted.

Thanks in advance.

EDIT: I already know a unique ID from the USB flash drive and the application can check if the Interfacetype property is "USB". I´m enrolling the application with a hash of the PNPDeviceID in a web-services suported licence manager. I'm searching for an additional second validation method.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

孤凫 2024-08-08 22:20:48

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

You can check the volume serial number, which will catch casual copying to a newly formatted volume, but it won't detect full byte-exact volume copies.
To protect software by accessing harddisk serial no
Any faster method to get Volume Serial number?

温柔戏命师 2024-08-08 22:20:48

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

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

You can check the type of drive from which the program is running :

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();
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文