2016-07-08 1 views
0

Windows 레지스트리에서 NSIS를 통해 응용 프로그램 이름을 읽고 싶습니다.32/64 비트 응용 프로그램을 검사하기 위해 레지스트리 키 읽기

ReadRegStr $R1 HKLM "SOFTWARE\Something\Something\" "ApplicationName"

$R1의 값의 출력은 항상없는 "응용 프로그램"입니다 :
응용 프로그램 이름은 "응용 프로그램 (86)"또는 "응용 프로그램 (64)"나는 다음과 같은 코드를 사용하고 을 할 수있다 괄호.
ReadRegStr은 항상 특수 문자를 무시합니까?
해결 방법이 있습니까?

답변

1

ReadRegStr 어떤 방법으로 문자열을 필터링하지 않습니다

Section 
; Write the test string first 
WriteRegStr HKCU "Software\NSIS\Test\" "Application" "Application (x86)" 

; ...and then read it and display the result 
ReadRegStr $R1 HKCU "Software\NSIS\Test\" "Application" 
MessageBox MB_OK "$R1" 

; Cleanup 
DeleteRegKey HKCU "Software\NSIS\Test\" 
SectionEnd 

가 64 비트 대 레지스트리 리디렉션/반사 또는 (32)에 의해 발생하는 레지스트리에 잘못된 장소에있는 오래 된 문자열을 읽고 있다는 것이 가능 조회수?

Process Monitor으로 설치 프로그램을 모니터링하면 읽고있는 레지스트리의 실제 위치와 응용 프로그램에 반환 된 값을 볼 수 있습니다.

+0

문제는 32/64 비트보기입니다. "SetRegView 32"및 "SetRegView 64"를 사용하여이를 해결했습니다. – Joe