Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何唯一地识别计算机程序?_C#_Database - Fatal编程技术网

C# 如何唯一地识别计算机程序?

C# 如何唯一地识别计算机程序?,c#,database,C#,Database,我有一个更一般的问题,但在C#中实现这一点的任何建议也将非常感谢。 我正在用C#制作一个基于PC windows的程序,其想法是,当运行程序的计算机连接到internet时,该程序将少量数据发送到某个服务器上的数据库。PC程序将被许多人使用,但我想知道,哪个用户(哪个程序)发送了数据。所以,我会把一个程序放在那里供人们下载和安装。然后这个程序将发送一些数据(这取决于用户在程序中所做的事情)到一个中央数据库,我想知道哪些程序发送了数据。通过这种方式,我可以看到程序的哪些功能使用最多,一些人是否主要

我有一个更一般的问题,但在C#中实现这一点的任何建议也将非常感谢。 我正在用C#制作一个基于PC windows的程序,其想法是,当运行程序的计算机连接到internet时,该程序将少量数据发送到某个服务器上的数据库。PC程序将被许多人使用,但我想知道,哪个用户(哪个程序)发送了数据。所以,我会把一个程序放在那里供人们下载和安装。然后这个程序将发送一些数据(这取决于用户在程序中所做的事情)到一个中央数据库,我想知道哪些程序发送了数据。通过这种方式,我可以看到程序的哪些功能使用最多,一些人是否主要使用其中的一个或多个功能

因此,问题是,如何制作一个程序,但能够区分该程序的不同“实例”

有人知道如何做到这一点吗

提前感谢您的所有回答。 干杯

p、 美国:我应该提到的是,我刚刚开始学习PC编程,所以对于初学者来说,尽量让答案简单易懂

我会在客户端上创建一个,并将其存储在某个设置中,然后将其与每条消息一起发送

这可以存储在计算机上的每个用户或全局设置中,以便获得基于用户或基于计算机的保真度


这样做的好处是,您不存储任何个人数据,因此不会违反隐私法。

您可以使用和登录用户名的组合(可能是散列的,这样您就不会持有私人信息)来唯一标识机器/用户组合。

无论您做什么,在发送数据之前,请确保获得每个用户的许可,否则很快就会失去用户的好感。在您的安装程序中,考虑将GUID写入文件系统,并在每次程序加载时读取GUID。安装程序还可以选择“发送匿名使用信息以改善客户体验”。如果他们取消选中该复选框,则也可以记录该事实。

您可以使用他们的公共IP,或者添加成员系统并记录他们的用户名。@Kiley Naro:好的,显然GUID是首选的方法。不过,我确实有一个顾虑:如果用户卸载软件或格式化计算机,然后重新安装应用程序,这将导致一个新的GUID,数据库将从此将该用户视为新用户。我这样想对吗?还是有办法解决这个问题?我能不能不使用一些用户计算机特有的数据?有人提到了IP,但如果它不是静态的,则会发生变化。@user1015043您的假设是正确的。您可以执行类似于将GUID存储在注册表项中的操作,并在安装时检查该注册表项是否存在。如果是,则向用户提供擦拭或保持原样的选项。除此之外,您还可以使用MAC地址,因为这是每个网络适配器所独有的,但是您必须问问自己,如果网络适配器发生了变化(非集成网络适配器确实存在),会发生什么情况。卸载或格式化计算机后是否会设置一个新的GUID,从而将同一用户显示为新用户?将GUID写入文件系统的确切含义是什么?将其写入磁盘上某个位置的文件?什么样的文件通常用于这些事情?可能不仅仅是普通的txt,对吧?我想你不会担心有人“冒充”另一台计算机(通过猜测另一台计算机的GUID)。我可能会把它变成一个名为“unique.prodkey”的隐藏文件(扩展名没有默认的程序来打开它)。这样,大多数用户可能根本看不到该文件,但如果他们看到了,就没有程序来打开它。