我想让我的网站用户能够在Windows上自动上传他们的软件/硬件配置。所以我正在考虑下载EXE文件,并以某种方式为每个用户添加一个唯一的EXE文件。收集数据后,程序只会将一些JSON发布到该URL。我该怎么做?我最熟悉.NET平台。像这样的工具确实存在,例如暴雪使用这种方法进行beta测试注册。每个用户下载的EXE略有不同。
TIA
答案 0 :(得分:4)
只需为每个用户创建唯一标识符
Guid.NewGuid()
然后将其嵌入下载中。或者更简单:在用户第一次运行应用程序时创建Guid。然后单次下载就足够了。
答案 1 :(得分:0)
我有几种方法可以解决这个问题。
如果您确实需要直接嵌入可执行文件中的唯一ID,那么您正在谈论:
这些对我来说似乎有点笨拙。为什么不能将唯一键保存在单独的文件中?只要它对每个用户都是唯一的,我不明白为什么它需要直接嵌入到exe中。当然,你仍然需要一种方法来包装它以便交付。您可以使用安装程序压缩“密钥文件”,并编写安装程序脚本以将密钥文件复制到exe文件的位置,我想。
当然,标识符应以某种方式加密,以阻止随意黑客破坏您的系统,可能使用注册用户的名称作为初始化向量(IV)或加密例程的salt值。只要可执行文件本身实际上没有使用任何关键字,那么它甚至不需要使用私钥来解密它。对于exe来说,它只是在要求更新时使用的神奇值。 exe可以在查询字符串中传递此值或发布更新请求的数据。在您的最后,您解密该值,提取用户ID,并使用该ID生成新的下载(如果有的话)。
如果您希望可执行文件使用该值,可能在启动时验证它是“正版”副本,那么您将不得不让它能够解密密钥。这意味着将解密密钥嵌入到exe文件中,并希望没有人用Reflector或其他东西挖掘它。
此时,您正在谈论全面复制保护,在这种情况下,您最好找到一个商用系统而不是自己编写一个系统。
答案 2 :(得分:0)
尝试使用唯一字符串编译应用程序。您可以使用相同长度的另一个字符串替换该字符串来搜索结果二进制文件。
我不知道.NET是否使用校验和或其他任何东西。