2012-01-05 2 views
0

VB6 코드를 컴파일하는 dll (VB6로 작성)이 있습니다. 레지스트리에서 VB6.exe 경로를 읽고 있는데 제대로 작동합니다.레지스트리 경로 vb6을 몰라도 레지스트리 값을 찾는 방법은 무엇입니까?

m_oRegTool.RegistryPath = "Applications\vb6.exe\shell\make\command" 

sVB6EXEFile = m_oRegTool.GetValueData("", "") 

문제는 VB6.exe 경로가 XP의 레지스트리에서 다른 위치에 있고 7 (64 비트)이기 때문입니다. 레지스트리의 위치를 ​​지정하지 않고 레지스트리에서 VB6.exe를 어떻게 찾을 수 있습니까?

덕분에,

답변

2

나는 생각 다음 레지스트리 키 경로에게 exe를 포함 할 것입니다 (표준에 설치하고 사용자가 기본값을 변경하지 않은 경우) :

HKEY_CLASSES_ROOT\VisualBasic.Project\shell\open\command 

을 이 키의 기본 값은 vbp 파일에 대한 열기 명령을 포함 - 내 컴퓨터에 :

"C:\Program Files (x86)\Microsoft Visual Studio\VB98\vb6.exe" "%1" 

그래서 그냥 "% 1"을 제거 할 수 있고 얻을 수있는 다른 따옴표 귀하의 경로

0

어쨌든 셸 레지스트리 항목을 왜곡하고 있는지 잘 모르겠습니다.

Shell32의 COM 인터페이스 나 표준 내보내기 시작점을 사용하여 적절한 파일 (일반적으로 .VBP)에 대해 "make"동사를 호출 할 수 있어야합니다. .VBP의 Shell Folderitem을 탐색하고 InvokeVerb 메서드를 호출하거나 ShellExecute/Ex를 호출하여 파일 경로와 "make"동사를 전달합니다.

레지스트리 동기가 필요하지 않으며 문서화 된 API를 사용하고 있습니다!

2

할 수 있습니다 설치 프로그램에 의해 작성된 레지스트리 값에서 VB6 설치 폴더를 얻을 : 샘플이 경로를 가져옵니다 (C 번호) 코드가,이 값은 C:\Program Files\Microsoft Visual Studio\VB98

내 시스템에서

HKLM\SOFTWARE\Microsoft\VisualStudio\6.0\Setup\Microsoft Visual Basic\ProductDir 

BuilderPro 프로젝트에

+0

VB6에서 코딩하는 사람은 C# 코드를 많이 사용하지 않습니다 ... –

+1

아니요,하지만 이미 레지스트리를 읽을 수있는 코드가 있습니다. 내 대답은 설치 자체가 사용하는 위치에 대한 것이 었습니다. 다른 경로를 포함하는 다른 값을 읽는 것이 아니라 다른 경로의 일부로 읽는 것입니다. – Deanna

관련 문제