如何使C#可执行文件特定于PC

如何使C#可执行文件特定于PC,c#,computer-name,C#,Computer Name,我正在制作一个普通的c#程序,希望它不可共享。我想这样做的方式是,我听说过一些代码,这些代码可以定位并找到用户电脑的名称。我有我朋友电脑的名称,并且只想在他运行电脑时工作 我分发它的人不可避免地会试图以另一种价格复制和共享它,但每次我都想为他们制作一个特定的程序,只指定我买家的桌面用户名 经过一些研究,我被链接到这里: 但我真的搞不懂。是否有任何函数/代码行可以直接获取用户电脑的名称并检查它是否与我销售的电脑匹配?感谢物业 您可以使用以下方法轻松验证计算机名: if(Environment.M

我正在制作一个普通的c#程序,希望它不可共享。我想这样做的方式是,我听说过一些代码,这些代码可以定位并找到用户电脑的名称。我有我朋友电脑的名称,并且只想在他运行电脑时工作

我分发它的人不可避免地会试图以另一种价格复制和共享它,但每次我都想为他们制作一个特定的程序,只指定我买家的桌面用户名

经过一些研究,我被链接到这里:

但我真的搞不懂。是否有任何函数/代码行可以直接获取用户电脑的名称并检查它是否与我销售的电脑匹配?感谢物业


您可以使用以下方法轻松验证计算机名:

if(Environment.MachineName != "ComputerName")
{
    Environment.Exit(-1);
}

您可以将计算机名与Environment.MachineName一起使用。 问题是,任何具有相同计算机名的人都可以运行该程序。 唯一标识机器的一种方法是获取网卡MAC地址:

var macAddr = 
    NetworkInterface.GetAllNetworkInterfaces()
    .Where(nic => nic.OperationalStatus == OperationalStatus.Up)
    .Select(nic => nic.GetPhysicalAddress().ToString())
    .FirstOrDefault();

您还应该确保没有NIC的可能性不会发生故障。

您真正需要的是某种类型的软件密钥来限制应用程序的使用,因为其他用户可以轻松更改其计算机的名称。看看这是个糟糕的主意。如果此人决定重命名其计算机怎么办?您也可以对其进行筛选macaddress@DaPosto--如果他们购买了一个新的NIC怎么办?想想一些授权服务器之类的东西,否则支持将是一场噩梦-我的意思是,对于每个用户来说,在源代码中使用硬编码的sting…-一开始是个坏主意