获得机器唯一ID的最佳方法 - NSIS

时间:2013-09-16 12:30:19

标签: nsis

我希望使用NSIS为

的机器创建一个唯一的ID

我在网上进行了一些研究,发现了一个用c#

编写的出色解决方案

http://www.codeproject.com/Articles/28678/Generating-Unique-Key-Finger-Print-for-a-Computer

是否有一些已知的库/插件/代码可以给我一个类似/接近的结果?

如果没有,那么实施此类解决方案的最佳方式是什么?

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

一个简单的解决方案是编译该代码,将exe嵌入到安装程序中,并在安装程序运行时运行exe。