日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當(dāng)前位置:首頁 > 科技  > 軟件

注意!Electron 無法獲取設(shè)備ID了!

來源: 責(zé)編: 時(shí)間:2024-03-18 09:42:19 170觀看
導(dǎo)讀大家好,我是楊成功。在桌面應(yīng)用開發(fā)中,常常需要獲取設(shè)備唯一 ID 來表示當(dāng)前客戶端的唯一性。一般的設(shè)備 ID 需要滿足兩個(gè)條件:基于硬件和系統(tǒng)配置生成,確保設(shè)備的唯一性。只要不重裝系統(tǒng),設(shè)備 ID 多次獲取都是唯一的。node

1Ms28資訊網(wǎng)——每日最新資訊28at.com

大家好,我是楊成功。1Ms28資訊網(wǎng)——每日最新資訊28at.com

在桌面應(yīng)用開發(fā)中,常常需要獲取設(shè)備唯一 ID 來表示當(dāng)前客戶端的唯一性。一般的設(shè)備 ID 需要滿足兩個(gè)條件:1Ms28資訊網(wǎng)——每日最新資訊28at.com

  • 基于硬件和系統(tǒng)配置生成,確保設(shè)備的唯一性。
  • 只要不重裝系統(tǒng),設(shè)備 ID 多次獲取都是唯一的。

node-machine-id 是一個(gè)常用的 Node.js 模塊,它能夠在 Electron 中獲取機(jī)器的唯一標(biāo)識。1Ms28資訊網(wǎng)——每日最新資訊28at.com

我們的產(chǎn)品就是使用該模塊,用法也很簡單:1Ms28資訊網(wǎng)——每日最新資訊28at.com

import { machineIdSync } from 'node-machine-id';let id = machineIdSync();

但是昨天出現(xiàn)了問題,排查結(jié)果是多臺設(shè)備獲取的 ID 竟然是一樣的,造成了一些設(shè)備的數(shù)據(jù)被篡改,我從 issues 中找到了一些端倪。1Ms28資訊網(wǎng)——每日最新資訊28at.com

圖片1Ms28資訊網(wǎng)——每日最新資訊28at.com

也就是在 Window Ghost 系統(tǒng)中會出現(xiàn)問題(啥是 Window Ghost ?)。1Ms28資訊網(wǎng)——每日最新資訊28at.com

Window 中還經(jīng)常遇到權(quán)限問題,而且這個(gè) ID 總歸不可控,所以還是用自定義的方式實(shí)現(xiàn)吧。1Ms28資訊網(wǎng)——每日最新資訊28at.com

自定義設(shè)置設(shè)備 ID

自定義的設(shè)備 ID 首先需要唯一,其次在安裝和卸載應(yīng)用時(shí)設(shè)備 ID 不變。1Ms28資訊網(wǎng)——每日最新資訊28at.com

滿足這兩個(gè)要求,最佳的方案就是將自己生成的設(shè)備 ID 存儲在用戶目錄下。1Ms28資訊網(wǎng)——每日最新資訊28at.com

假設(shè)當(dāng)前用戶叫張三,他的用戶目錄:1Ms28資訊網(wǎng)——每日最新資訊28at.com

  • Window:C:/Users/張三/
  • MacOS:/Users/張三/

很多應(yīng)用程序都把配置寫到用戶目錄下,且該目錄一般不會遇到權(quán)限問題。1Ms28資訊網(wǎng)——每日最新資訊28at.com

使用 uuid 生成設(shè)備 ID:1Ms28資訊網(wǎng)——每日最新資訊28at.com

import { v4 as uuidv4 } from 'uuid';const device_id = uuidv4();

在主進(jìn)程中獲取到用戶目錄,非常簡單:1Ms28資訊網(wǎng)——每日最新資訊28at.com

import { app } from 'electron';const user_path = app.getPath('home'); // 自動獲取 Win 或 Mac 的用戶目錄

在用戶目錄下創(chuàng)建 .elappid 文件,存放生成的設(shè)備 ID:1Ms28資訊網(wǎng)——每日最新資訊28at.com

import { join } from 'node:path';import fs from 'node:fs';// 獲取配置文件地址let appid_path = join(user_path, '.elappid');// 判斷文件是否存在,不存在就先創(chuàng)建,并寫入設(shè)備IDif (!fs.existsSync(appid_path)) {  fs.writeFileSync(appid_path, device_id, 'utf8');}

讀取設(shè)備 ID,并發(fā)送給渲染進(jìn)程:1Ms28資訊網(wǎng)——每日最新資訊28at.com

let appid = fs.readFileSync(appid_path, 'utf8');win.webContents.send('susr-config', { appid });

寫一個(gè)進(jìn)程間交互的方法,就能拿到設(shè)備 ID 了。1Ms28資訊網(wǎng)——每日最新資訊28at.com

什么時(shí)候獲取設(shè)備 ID

正常情況下,我們希望用戶打開應(yīng)用的時(shí)候,主動獲取設(shè)備 ID 并發(fā)給渲染進(jìn)程。1Ms28資訊網(wǎng)——每日最新資訊28at.com

然而經(jīng)過測試,在創(chuàng)建瀏覽器窗口的同時(shí)立即獲取設(shè)備 ID 并通知渲染進(jìn)程,在正式環(huán)境中,渲染進(jìn)程往往接受不到消息。1Ms28資訊網(wǎng)——每日最新資訊28at.com

這是因?yàn)閯?chuàng)建窗口時(shí),頁面還沒有初始化完成,自然接收不到消息。1Ms28資訊網(wǎng)——每日最新資訊28at.com

保險(xiǎn)的方法就是在頁面加載完成后再獲取設(shè)備 ID,方法如下:1Ms28資訊網(wǎng)——每日最新資訊28at.com

win = new BrowserWindow({...})// 頁面加載完成后觸發(fā):win.webContents.on("did-finish-load", () => {  console.log('在這里獲取設(shè)備ID吧')})

大功告成,你也試試吧!1Ms28資訊網(wǎng)——每日最新資訊28at.com

本文鏈接:http://www.www897cc.com/showinfo-26-76538-0.html注意!Electron 無法獲取設(shè)備ID了!

聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。郵件:2376512515@qq.com

上一篇: 談?wù)凧S二進(jìn)制:File、Blob、FileReader、ArrayBuffer、Base64

下一篇: 贈你13張圖,助你20分鐘打敗了「V8垃圾回收機(jī)制」!!!

標(biāo)簽:
  • 熱門焦點(diǎn)
  • 中興AX5400Pro+上手體驗(yàn):再升級 雙2.5G網(wǎng)口+USB 3.0這次全都有

    2021年11月的時(shí)候,中興先后發(fā)布了兩款路由器產(chǎn)品,中興AX5400和中興AX5400 Pro,從產(chǎn)品命名上就不難看出這是隸屬于同一系列的,但在外觀設(shè)計(jì)上這兩款產(chǎn)品可以說是完全沒一點(diǎn)關(guān)系
  • 把LangChain跑起來的三個(gè)方法

    使用LangChain開發(fā)LLM應(yīng)用時(shí),需要機(jī)器進(jìn)行GLM部署,好多同學(xué)第一步就被勸退了,那么如何繞過這個(gè)步驟先學(xué)習(xí)LLM模型的應(yīng)用,對Langchain進(jìn)行快速上手?本片講解3個(gè)把LangChain跑起來
  • K8S | Service服務(wù)發(fā)現(xiàn)

    一、背景在微服務(wù)架構(gòu)中,這里以開發(fā)環(huán)境「Dev」為基礎(chǔ)來描述,在K8S集群中通常會開放:路由網(wǎng)關(guān)、注冊中心、配置中心等相關(guān)服務(wù),可以被集群外部訪問;圖片對于測試「Tes」環(huán)境或者
  • 2天漲粉255萬,又一賽道在抖音爆火

    來源:運(yùn)營研究社作者 | 張知白編輯 | 楊佩汶設(shè)計(jì) | 晏談夢潔這個(gè)暑期,旅游賽道徹底火了:有的「地方」火了——貴州村超旅游收入 1 個(gè)月超過 12 億;有的「博主」火了&m
  • 拼多多APP上線本地生活入口,群雄逐鹿萬億市場

    Tech星球(微信ID:tech618)文 | 陳橋輝 Tech星球獨(dú)家獲悉,拼多多在其APP內(nèi)上線了“本地生活”入口,位置較深,位于首頁的“充值中心”內(nèi),目前主要售賣美食相關(guān)的
  • 品牌洞察丨服務(wù)本地,美團(tuán)直播成效幾何?

    來源:17PR7月11日,美團(tuán)App首頁推薦位出現(xiàn)“美團(tuán)直播”的固定入口。在直播聚合頁面,外賣“神槍手”直播間、美團(tuán)旅行直播間、美團(tuán)買菜直播間等均已上線,同時(shí)
  • 華為Mate 60系列用上可變靈動島:正式版體驗(yàn)將會更出色

    這段時(shí)間以來,關(guān)于華為新旗艦的爆料日漸密集。據(jù)此前多方爆料,今年華為將開始恢復(fù)一年雙旗艦戰(zhàn)略,除上半年推出的P60系列外,往年下半年的Mate系列也將
  • 2299元起!iQOO Pad開啟預(yù)售:性能最強(qiáng)天璣平板

    5月23日,iQOO如期舉行了新品發(fā)布會,除了首發(fā)安卓最強(qiáng)旗艦處理器的iQOO Neo8系列新機(jī)外,還在發(fā)布會上推出了旗下首款平板電腦——iQOO Pad,其搭載了天璣
  • 聯(lián)想小新Pad Pro 12.6將要推出,搭載高通驍龍 870 處理器

    聯(lián)想小新Pad Pro 12.6將于秋季新品會上推出,官方按照慣例直接在發(fā)布會前給出了機(jī)型的所有參數(shù)。聯(lián)想小新 Pad Pro 12.6 將搭載高通驍龍 870 處理器,重量為 5
Top 主站蜘蛛池模板: 淮南市| 庆云县| 昔阳县| 宜州市| 巴马| 花垣县| 孝感市| 岱山县| 育儿| 汝阳县| 江源县| 绥阳县| 江阴市| 邯郸市| 六安市| 迭部县| 伊金霍洛旗| 郑州市| 五家渠市| 会同县| 渝中区| 三门县| 山西省| 冀州市| 漳平市| 安泽县| 麦盖提县| 广东省| 图们市| 乌拉特前旗| 香港| 宣化县| 志丹县| 冕宁县| 安阳市| 洛浦县| 祁阳县| 突泉县| 芜湖县| 东乡县| 麻栗坡县|