获取计算机唯一识别码的问题,有大佬有经验吗?

2020-11-09 20:54:38 +08:00
 PUBG98k
Windows,macOS.下
如何给计算机 生成绝对唯一的 识别码.类似 Teamviewer 的 ID.
------------
需要考虑到 VMWARE 系统,以及服务器 云机.Ghost 系统.
------------
目前 ToDesk 使用的是:
uuid+mac,但是依然还是不行.
---
uuid 在 ghost 系统会重复,mac 地址重复.

系统安装时间,Win10 在更新补丁的时候,会更改.

硬盘序列号,在 vmware 的系统里是没有硬盘序列号的.
cpu 序列号 也是不唯一了.现在都改成生产批号了.

服务器系统又没有鼠标键盘显卡可以获取唯一码.
蛋疼~~~
10025 次点击
所在节点    程序员
66 条回复
dingwen07
2020-11-09 20:59:07 +08:00
我这 teamviewer id 会变,经常被退出登录
为什么要用唯一 ID ?除了作恶我想不到别的了
PUBG98k
2020-11-09 21:02:18 +08:00
@dingwen07 如果你办公室里的电脑,下班之前,安装了 ToDesk,设置了开机自启动和无人值守密码.开开心心的回家了
因为其他原因,比如断电,系统自动更新或者你重启了下
回到家.想远程上去工作,ID 变了.无法连接怎么办呢?
ho121
2020-11-09 21:13:41 +08:00
随机生成一个 uuid,然后写入注册表
3dwelcome
2020-11-09 21:13:51 +08:00
@PUBG98k 不用唯一 id,用账号密码在线登录就可以。
PUBG98k
2020-11-09 21:19:11 +08:00
@ho121 安装好了 todesk 生成 id 的.然后 Ghost 系统呢?注册表就一样了
PUBG98k
2020-11-09 21:20:32 +08:00
@3dwelcome 一个账号密码是可以登陆多台电脑的.
dyv9
2020-11-09 21:21:51 +08:00
@ho121 好主意,就应该用户来指定 id,登录时自动映射设备与账户的关联,这和动态域名一样的思路。我们只需要在不存在缓存的设备编号时生成 uuid 然后缓存越来代表这个用户,在用户明确注销登录时才清空缓存,类似 cookie,不主动注销登录就不清空缓存。
phpc
2020-11-09 21:25:00 +08:00
把你提到的和楼上提到的这些东西拼接在一起?
PUBG98k
2020-11-09 21:30:16 +08:00
@dyv9 不能的,同一个账号下,如果有 10 台电脑.
我应该用什么来区别,我这个 ID 是绑定在某个电脑上的.
以什么特征来区别.这就回到我的问题上去了.
3dwelcome
2020-11-09 21:43:44 +08:00
@PUBG98k 用户名密码在线登录,服务器是可以知道你有没有重复登录的。
服务器给客户端分配唯一 id,还不是轻而易举的事情。
PUBG98k
2020-11-09 22:30:06 +08:00
@3dwelcome ID 要固定啊.只要这台电脑不重装的情况下,都要求 ID 固定才能满足我们的业务需求.
10 个数字 ID 对应 10 台电脑.
我全部都退出账号了,再登陆.如何确保原来哪台电脑是什么 ID.还是那个 ID.
zsdroid
2020-11-09 22:44:09 +08:00
登录生成 uuid,写入文件。每次打开软件时联网校验 uuid 是否重复,重复了重新生成。
mcone
2020-11-09 22:58:18 +08:00
@PUBG98k 既然你都有账号系统了,你每次新设备登录的时候,让用户自己选 /服务器强行分配一个目前可使用的独一无二 ID 不就行了……

理论上说,只要用户全心想作恶,你用 mac/序列号 /cpu 都没用,作恶设备的 ID 只能用过服务器鉴权后重新分配才能达到你的效果
Greatshu
2020-11-09 23:01:05 +08:00
一样的 UUID 没关系,服务器限制同样 UUID 不能同时登陆就行,登录总有先后的
PUBG98k
2020-11-09 23:10:50 +08:00
@mcone 很多用户是企业用户.他们一个账号下几百台设备的..

@zsdroid 如果生成在本机,然后 Ghost 的系统镜像,再去拿这个镜像去装别的电脑.2 台电脑就一样了.
supermoonie
2020-11-09 23:15:00 +08:00
oshi 里有生成机器码的 demo
nuk
2020-11-09 23:18:07 +08:00
onetime key, 每次连接到服务器分配下一次连接的 key,如果 key 已经被用过,就分配一个新的 ID
GM
2020-11-09 23:24:51 +08:00
给你 TV 在 Mac 下的大概做法做参考:

第一次启动,生成唯一 ID,存入特定位置,以后永远都用这个 ID,除非手动清除掉存储的信息。

Ghost 问题:
Ghost 之前,删掉之前生成的信息再 Ghost,下次系统启动后会发现这是全新的系统,走上面的流程。
如果没删掉就 Ghost,新系统会冲突导致登录不上,新系统不会上线,不干扰之前的系统。
cz5424
2020-11-09 23:33:56 +08:00
服务端分配后,写入本地的某个位置,启动后校验一下 id 是不是服务端生成的,不是就重新分配
3dwelcome
2020-11-09 23:39:43 +08:00
@PUBG98k id 固定就必然要存到磁盘上,存到磁盘上就必然会遇到 ghost,所以不能用静态 id 。
只要能联局域网,就直接根据网络出口路径 tracert,分配一个动态 id 就可以了。
除非网络环境变了,本机 ip 变了(比如 ghost 了一个虚拟机)就需要用户强制登录一次,再分配一个新 id 。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/723357

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX