首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >.NET版权保护

.NET版权保护
EN

Stack Overflow用户
提问于 2009-07-17 09:18:23
回答 8查看 5.9K关注 0票数 4

有没有可能以某种方式将.NET可执行文件限制在特定的计算机上,使其只能在该计算机上运行。

EN

回答 8

Stack Overflow用户

回答已采纳

发布于 2009-07-18 06:02:48

是的,我在我的应用中做到了这一点。它工作得很好。

获取系统信息(CPUID,MacID,硬盘详细信息)很容易使用WMI (强烈推荐)。

我创建了一个几乎万无一失的系统(除非你是专业黑客)。

当我的应用程序第一次安装在用户的PC上时,它们会使用web服务返回到我的服务器。他们使用口令散列来标识自己,并查找客户端的授权码/订单id。

如果客户端拥有正确的授权码,应用程序将加密并将系统详细信息存储在客户端的计算机上,并将信息的哈希信息发送到存储该信息的服务器。然后使用一些散列标志在客户端的计算机上激活该软件,每次应用程序运行时,系统信息都会与文件中的散列信息进行比较。

如果客户重新格式化计算机,他所需要的就是订单id,以便再次自动激活软件(当程序与我的服务器核对时,系统详细信息将得到验证和批准,如果它们匹配)。如果客户将软件安装在另一台计算机上,他必须联系我的支持团队以获得批准。

--所有信息都经过加密和散列(双重加密)。--所有代码都是经过混淆和打包的。

目前,它运行得相当安全。

所以,是的,这是可能的,它已经经过现场测试,发现它和任何其他保护系统一样有效。

票数 10
EN

Stack Overflow用户

发布于 2009-07-17 09:21:41

不能使用处理器id并每次都检查它(?)

我前段时间写的Here is a sample code

代码语言:javascript
复制
Imports System.Management

Public Class Form1

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

        'Declare following three object variables

        Dim objMOS As ManagementObjectSearcher
        Dim objMOC As Management.ManagementObjectCollection
        Dim objMO As Management.ManagementObject

        'Now, execute the query to get the results
        objMOS = New ManagementObjectSearcher("Select * From Win32_Processor")

        objMOC = objMOS.Get

        'Finally, get the CPU's id.
        For Each objMO In objMOC
            MessageBox.Show("CPU ID = " & objMO("ProcessorID"))
        Next

        'Dispose object variables

        objMOS.Dispose()
        objMOS = Nothing
        objMO.Dispose()
        objMO = Nothing

    End Sub
End Class
票数 2
EN

Stack Overflow用户

发布于 2009-07-17 13:34:38

假设机器有NIC,您可以使用MAC address

Read MAC Address from network adapter in .NET

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1142217

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档