2017-02-07 13 views
0

私が使用してNSISでQWORDを書くしようとしてきたRegistry Plug-inNSISライティングQWORD HEX VALUE

!define REG "SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\some.exe" 
!define REG_VALUE "MitigationOptions" 
!define REG_DATA 0x2000000000000 

${registry::Write} "HKLM\${REG}" "${REG_VALUE}" ${REG_DATA} "REG_QWORD" $R0 

私はインストール後に、レジストリをチェックすると、それは常に示しなど(無効QWORD(64ビット)値)

私は "0002000000000000"、 "2000000000000"と2000000000000を試しましたが、機能しませんでした。何か案が?

答えて

1

データは正確に16桁の16進数でなければならず、0xというプレフィックスはありません。

!include "Registry.nsh" 
Section 
${registry::Write} "HKCU\Software\NSIS\Test" "Test DW64" "112233445566aabb" "REG_QWORD" $R0 
DetailPrint $R0 
SectionEnd 

データは64ビットの数値としてバイト、ないと解釈しているようだと、あなたは、文字列を逆にする必要があるので、それは少し不便です:

Function StrRev 
Exch $0 
Push $1 
Push $2 
Push $3 
StrCpy $3 "" 
StrCpy $1 0 
loop: 
    StrCpy $2 $0 1 $1 
    StrCmp $2 "" done 
    IntOp $1 $1 + 1 
    StrCpy $3 $2$3 
    Goto loop 
done: 
StrCpy $0 $3 
Pop $3 
Pop $2 
Pop $1 
Exch $0 
FunctionEnd 

Section 
Push "112233445566aabb" 
Call StrRev 
Pop $0 
${registry::Write} "HKCU\Software\NSIS\Test" "Test DW64" "$0" "REG_QWORD" $R0 
SectionEnd 
+0

これは素晴らしい仕事!どうもありがとう! – qmo