我怎样才能使一个程序,只有当我插入USB驱动器运行?

让我解释一下这是怎么回事 我想要一个安装在个人计算机上的程序,但是除非你在程序的某个部分存储了一个USB驱动器,否则你不能运行它。 所以问题是,如果你没有PC和USB驱动器,程序是没用的。 因为我想让它在Windows下运行,除了.NET和C#之外,我还应该使用哪种语言?

我可以用Python完成吗?

如果您在插入USB驱动器之后可以启动程序,则非常简单。 你可以把代码放在一个单独的模块中,这个模块是PC上运行的程序的一部分(例如imp模块 ),然后启动主要部分(从USB驱动器)。

如果你正在尝试这样做的版权保护或许可证管理,有商业的解决方案,这是非常困难的(但仍然不是不可能)击败。 对于您开发稳健的产品,您最终将花费更多的成本,而不是从Pace,Aladdin或其竞争对手那里购买解决方案。

商业解决方案通常具有可用于公钥密码的微芯片的(usb)器件。 这排除了伪装设备。

例如:程序生成一个质询代码,用公钥加密 – >设备用它的密钥(存储在微芯片中)解密,然后提供质询代码进行验证。

攻击者只能攻击程序和设备之间的通信或直接攻击程序。 这是代码混淆,按需代码解密,…进场。 非常复杂:)没有系统是100%安全的。

您可以将整个程序安装在计算机上,只有在插入特定的USB驱动器时才能启动。

例如,您可以读取驱动器的序列号(每个USB驱动器都有唯一的一个)。

有关如何做到这一点的更多信息看看这里 。

回到OP的问题,你一定会想要我们( Wibu-Systems ), 阿拉丁 (现在是SafeNet的一部分), KeyLok或类似产品的加密狗 。 每个人都有优点和缺点。 例如,我们的系统从来没有被破解过,并且可以保护虚拟机上的许可证违规行为。

价格不一。

我知道我们的产品和SafeNet的将允许你用C ++,C#和可能的Python编写你的应用程序,因为他们正在加密你的最终二进制文件(大多数他们不关心它是如何创建的)。 一些研究是必要的; 我列出的所有供应商都提供免费的SDK,为您提供实际的硬件设备和测试应用程序所需的工具。

要自己滚动,或检查USB闪存驱动器的SN,几乎肯定会有问题。 SN很容易破解和伪造。 良好的软件保护设备将大量的思想,开发时间和技术集成到一个简单的小工具中。 你可以编写你自己的BIOS或者建立你自己的主板,但是为什么呢?