0

NSIS を使用してマシンに一意の ID を作成したいのですが、

私はウェブ全体でいくつかの調査を行い、C#で書かれた優れたソリューションを見つけました

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

同様の/近い結果をもたらす既知のライブラリ/プラグイン/コードはありますか?

そうでない場合、このタイプのソリューションを実装する最良の方法は何ですか?

4

2 に答える 2

1

システム dll 以外の外部依存関係を必要としない、wiki 上のNSIS を使用して GUID を生成する例(実際には 3 つの連続する方法) があります。

つまり、あなたが言及したコードのようなシステム管理を使用せず、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 に答える