我想創建一個唯一的ID使用NSIS機器,的最佳方式 - NSIS
我做了一些研究翻過網頁,發現了C#編寫的一個很好的解決方案
http://www.codeproject.com/Articles/28678/Generating-Unique-Key-Finger-Print-for-a-Computer
是否有一些已知的庫/插件/代碼,給我一個類似/關閉結果?
如果不是,那麼實施這種類型的解決方案的最佳方法是什麼?
我想創建一個唯一的ID使用NSIS機器,的最佳方式 - NSIS
我做了一些研究翻過網頁,發現了C#編寫的一個很好的解決方案
http://www.codeproject.com/Articles/28678/Generating-Unique-Key-Finger-Print-for-a-Computer
是否有一些已知的庫/插件/代碼,給我一個類似/關閉結果?
如果不是,那麼實施這種類型的解決方案的最佳方法是什麼?
一個簡單的解決方案是編譯代碼,將exe嵌入到您的安裝程序中,並在安裝程序運行時運行exe。
在wiki上有一個generating a GUID with NSIS的例子(實際上是3個連續的方法),除了系統dll以外不需要外部依賴。
簡而言之,它不像您提到的代碼那樣使用系統管理,而是直接從ole32中調用CoCreateGuid()
函數。
系統訪問:它可以自動彈出堆棧到變量,你給它,或保持在棧上
Function CreateGUID
System::Call 'ole32::CoCreateGuid(g .s)'
FunctionEnd
助手宏:
!define CreateGUID `!insertmacro _CreateGUID`
!macro _CreateGUID _RetVar
Call CreateGUID
!if ${_RetVar} != s
Pop ${_RetVar}
!endif
!macroend
例子:
;${CreateGUID} $0 ; $0 contains GUID (poped from the stack by the macro)
;${CreateGUID} s ; the value is kept on the stack, we pop it ourselves
;Pop $0 ;contains GUID
這給了我那個機器在當前時間的GUID,如果我想要一個GUID爲那臺機器(所以如果我再次運行相同的方法我woul d得到相同的GUID? ) –
http://msdn.microsoft.com/en-us/library/windows/desktop/ms688568(v=vs.85).aspx - >「爲了非常高的確定性,該函數返回一個唯一值 - 沒有其他調用,在相同或任何其他系統(聯網或不),應返回相同的值「 - >我希望同一系統給予相同的調用... –