授权USB驱动器

有没有什么方法或build议如何编写和授权在C#编写的程序中的USB驱动器? 我不想准备某种白名单,但不知何故检测到USB驱动器是由我准备的。 USB驱动器将被用来更新我的程序。

检测隐藏文件和文件夹不是一个解决scheme,因为用户可以随时显示/删除所有隐藏的东西。

此外,该程序必须检测到USB驱动器在Windows> = XP上被授权。

编辑

USB驱动器应该像普通的USB一样在每个操作系统上工作,除了它应该在我的程序中可以授权的东西。

根据SST的一些建议,我设法制定了一个满足我的解决方案。 它不直接使用C#,但是可以用那种语言来管理,

在我的解决方案中执行的步骤:

  1. 在您的USB驱动器中创建尽可能小的未分配的分区(在我的情况下是7.8MB)
  2. 基于USB驱动器的信息创建一个散列字符串,并将其写入该未分配的分区。

在这个解决方案中,用户根本不知道USB是否被授权,他可以格式化一个可见的分区并在其上写下所有的东西。 即使复制该驱动器的图像不授予复制USB驱动器的权限。

在Windows中使用dd我可以读取和写入散列,我可以直接从c#运行该过程。

你为什么试图避免一个特殊的文件? 您将一个隐藏的txt文件与生成的哈希键放在其中。 这个散列是基于你的USB驱动器制造商序列号和密钥(你的程序有)生成的。 在计算机中放置USB驱动器时,程序会从文件中读取哈希键,并将其与程序计算的结果进行比较。 如果它们相同,则授权USB驱动器。 没有这个文件,你只是不授权USB驱动器。 如果你想用户不能删除这个文件,你应该使用隐藏分区,但这是更复杂的解决方案。

那么加密整个驱动器或把一个加密的文件/容器上呢? 密码可以嵌入到你的程序中。 (这不是最安全的解决方案,但对于您的目的来说,这是一个简单的解决方案。)