Unity 獲取唯一識別符號的問題解決方案

2021-08-18 22:15:56 字數 1869 閱讀 8405

環境:只適用於pc

一:遇到的坑

unity 提供了給我一套獲取硬體資訊的api 鏈結 蠻牛上的一篇帖子:鏈結

文中都提到了乙個獲取裝置的唯一識別符號

但是我可以明確告訴你 這個值會改變(過一段時間就會變 就是被他坑了)

檢視api文件

是根據主機板序列號.bios序列號.cpu資訊.硬碟序列號.作業系統資訊 來進行加密或者其他演算法得出的,也許是某個東西會隨著時間而改變 導致整個獲取的識別符號是會改變的(行不通 gg)

二:第二種方法還是坑

既然不能通過systeminfo來獲取識別符號 那麼就想著能不能用c#相關api來獲取,為此就找到一篇帖子:鏈結

然後在unity風風火火的copy**。。。。but~居然獲取不了 我真b了狗,起初我以為是我新增引入system.management不對,

因為新增的是unity下面的,以為是unity進行閹割了所以不能獲取

然後又在作業系統資料夾找的整個dll,最後發現還是不對,報錯顯示

猜想可能是mono虛擬機器不支援,咋辦呢?

三:解決方案

首先宣告整個解決方案有點不太爽。。。。

雖然unity不能 但是我們能用c#來獲取 於是乎 我就寫了乙個控制台程式 把獲取cpu序列號什麼的都寫進去,然後發現成功了

(再次證實unity mono不能獲取)

ojxk,然後我將獲取的寫入到了乙個文字,如下**:

class program

/// /// 獲取cpu硬體資訊

///

///

private static string getcpuid()

moc = null;

mc = null;

return cpuinfo;

}catch

finally

}/// /// 獲取硬碟id

///

///

private static string getdiskid()

moc = null;

mc = null;

return hdid;

}catch

finally}}

然後將這個控制台程式編譯的exe取出來

接著將整個exe放到unity的streamingasstens資料夾中

想到的思路是在unity啟動的時候 執行整個控制台程式 然後讀取生成的txt裡面的內容當作唯一識別符號

(這裡說明一下出現的問題 本來我是把那個控制台程式放在streamingasstes資料夾下面 想的是執行那個程式 能直接在streamingassets下面生產乙個txt檔案 結果發現不行 試了好幾種路徑 最後發現都會生產在發布後的exe同級資料夾路徑下面)

**:

using unityengine;

using sysdia = system.diagnostics;

void start()

else

} private ienumerator ieconfigpwd()

else

}

大概思路就是這樣了 我在這裡寫進了登錄檔 方便下一次啟動的時候我可以直接從登錄檔獲取整個值 就不用再次啟動那個控制台程式了,如果有其他的好方法記得告訴我 我也是技術有限才這樣搞~

獲取唯一識別符號

ios 2.0版本以後uidevice提供乙個獲取裝置唯一識別符號的方法uniqueidentifier,通過該方法我們可以獲取裝置的序列號,這個也是目前為止唯一可以確認唯一的識別符號。但是,因為該唯一識別符號與手機一一對應,蘋果覺得可能會洩露使用者隱私,所以在ios 5.o之後該方法就被廢棄掉了。...

iOS獲取裝置唯一識別符號

在開發中會遇到應用需要記錄裝置標示,即使應用解除安裝後再安裝也可重新識別的情況,在這寫一種實現方式 讀取裝置的uuid universally unique identifier 並通過keychain記錄。首先儲存裝置的uuid,可以使用類方法 id uuid 是乙個類方法,呼叫該方法可以獲得乙個...

iOS唯一識別符號

在2013年3月21日蘋果已經通知開發者,從2013年5月1日起,替代的方案是開發者應該使用 在ios 6中介紹的vendor或advertising標示符 cfuuid方法用來建立cfuuidref,並且可以獲得乙個相應的nsstring,如下 cfuuidref cfuuid cfuuidcre...