0

我希望使用 NSIS 为机器创建一个唯一的 id,

我在网上做了一些研究,发现了一个用 c# 编写的很棒的解决方案

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

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

如果不是,那么实施此类解决方案的最佳方法是什么?

4

2 回答 2

1

wiki 上有一个使用 NSIS 生成 GUID的示例(实际上是 3 个连续的方法),除了系统 dll 之外不需要外部依赖。

总之,它不像你提到的代码那样使用系统管理,而是直接CoCreateGuid()从ole32调用函数。

系统访问器:它可以自动将堆栈弹出到你给它的变量中,或者将它保留在堆栈中

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
于 2013-09-17T08:29:07.863 回答
0

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

于 2013-09-16T22:41:16.150 回答