2012-03-19 2 views
5

Wise Installation Studio로 작성된 32 비트 응용 프로그램과 32 비트 설치 프로그램이 있습니다. 나는을 알고있다. 나는 현명하지 않아야하며 나는 다른 것으로 전환해야한다. 하지만 지금은 그걸로 붙어 있습니다.32 비트 설치 프로그램에서 64 비트 레지스트리에 쓰기

우리의 응용 프로그램은 그래픽을 많이 사용하며 성능을 향상시키기 위해 실행 중에 데스크톱 구성 (Windows Aero)을 사용하지 않도록 설정해야합니다. DISABLEDWM의 값으로

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers 

: 우리는에서 레지스트리 항목을 추가하여 32 비트 시스템이 완성.

기본적으로 EXE에 대한 속성의 호환성 탭에서 "바탕 화면 구성 사용 안함"확인란이 선택됩니다.

이것은 32 비트 시스템에서 완벽하게 작동하지만 64 비트 시스템에서 설치 프로그램을 실행하면 Windows에서 레지스트리 항목 생성을 HKLM\SOFTWARE\Wow6432Node으로 리디렉션하고 플래그가 올바르게 설정되지 않습니다. 수동으로 64 비트 레지스트리보기에서 항목을 작성하면 작동합니다.

32 비트 설치 관리자의 64 비트 레지스트리보기에서이 레지스트리 키를 강제로 만들 수 있습니까? 아니면 레지스트리 항목을 만드는 것 외에이 속성을 설정하는 더 좋은 방법이 있습니까?

+1

현명한 프로젝트 유형은 MSI 설치 프로그램입니까? –

+0

@ChristopherPainter : 나는 그렇게 생각하지 않는다. (체크하는 방법을 모르겠다.) 그러나 결과 설치 프로그램에는 **. exe ** 확장명 (.msi가 아님)이 있습니다. Wise Installation Studio에서 어디에서 찾을 수 있습니까? – Travesty3

답변

4

Wise가 스크립팅과 관련하여 어떤 가능성을 제공하는지 잘 모르겠지만 정규 프로그램에서 64 비트 레지스트리에 액세스하는 방법은 KEY_WOW64_64KEY을 사용하여 레지스트리를 조작하는 것입니다.

적어도 설치 프로그램에서 외부 EXE 파일을 실행할 가능성이 있다면 문제가 해결됩니다.

+0

감사. 최소한 새로운 설치 프로그램으로 마이그레이션하는 데 약간의 시간을 투자하는 것이 가치 있다고 모든 사람들에게 확신시킬 수있을 때까지해야 할 일입니다. – Travesty3

0

일반적으로 32 비트 응용 프로그램에서 64 비트 레지스트리에 액세스 할 수 없습니다. PowerShell 용으로 WMI를 통해 64 비트 레지스트리에 액세스 할 수있는 몇 가지 코드를 발견했습니다. http://gallery.technet.microsoft.com/scriptcenter/6062bbfc-53bf-4f92-994d-08f18c8324c0

그러나 Wise에서 사용할 수 있는지 여부는 확실하지 않습니다. 대신 Windows Installer XML을 사용하고 64 비트 MSI를 생성 할 수 있습니다.

0

또한 Wise를 사용하고 32 비트와 64 비트 창을 모두 지원해야합니다. 배치 파일을 사용하여 reg.exe를 호출하여 64 비트 레지스트리 항목을 삭제하고 쿼리하는 데 성공했습니다. 동일한 기술을 사용하여 레지스트리를 추가하고 수정할 수 있어야합니다. "프로그램 파일 (x86)이 64 비트 창인지 확인하기 위해 찾았습니다. 그렇지 않은 경우 현명한 방법으로 네이티브 레지스트리 컨트롤을 사용합니다. 그렇지 않으면 매개 변수로 전달 된 배치 파일을 사용합니다. 경로에 Reg.exe가 있어야합니다. .? 구문을 얻을/도스 프롬프트 입력 등록 번호로 이동

을 나는 다음과 같은 포함 된 regtest.bat,이 있습니다. reg.exe를 질의 % 1/V % 2> % 3

첫 번째 매개 변수는 레지스트리 키이고 두 번째 값은 쓰여지고 세 번째 매개 변수는 쓰여지는 텍스트 파일입니다

내 regdelete.bat에는 다음이 포함되어 있습니다 : reg.exe delete % 1/f param은 레지스트리 항목입니다 삭제 하시겠습니까?

0

Reg.exe 과 함께 쿼리 레지스트리가 있지만 문제가 여전히 존재합니다. Wise에서 호출 한 bat 파일 때문에 reg 쿼리에서 64 비트 키 (32 비트 키만 찾을 수 있음)를 찾을 수 없기 때문입니다.

3

나는이 솔루션은이 질문에 질문을 받았다 때 가능했던 경우 잘 모르겠지만, 당신은 REG ADD 명령을 실행하는 사용자 지정 작업을 만들 수 있으며,이 같은 /reg:64 스위치 포함 :

REG ADD "HKLM\Software\Example" /v "Name" /t REG_SZ /d "Data" /reg:64 

/reg:64 스위치는 강제로 64 비트 레지스트리로 이동합니다. 필자는 이것이 32 비트 시스템에서 무엇을 할 것인지 완전히 확신하지는 않지만 아마도 무시 될 것으로 기대합니다.

+0

실제로 이것은 올바른 방법입니다. 허용 된 대답은 API 호출에 유효하지만이 경우 REG를 사용하여 키를 추가/삭제할 때/reg : 64가 트릭을 수행합니다. –

관련 문제