Как найти значение реестра, не зная путь реестра vb6? - PullRequest
0 голосов
/ 05 января 2012

У меня есть dll (написано в vb6), которая компилирует код VB6. Я читаю путь VB6.exe из реестра, и он отлично работает.

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

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

Проблема в том, что путь VB6.exe находится в разных местах реестра для XP и win 7 (64 бит). Любые идеи, как я могу найти VB6.exe в реестре без указания места в реестре?

спасибо,

Ответы [ 3 ]

2 голосов
/ 05 января 2012

Вы можете получить папку установки VB6 из значения реестра, записанного установщиком:

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

На моей машине это значение равно C:\Program Files\Microsoft Visual Studio\VB98

В моем проекте BuilderPro есть пример кода (C #), который получает этот путь.

2 голосов
/ 05 января 2012

Я думаю, что (в стандартной установке, и если пользователь не изменил по умолчанию), что следующий раздел реестра будет содержать путь к exe:

HKEY_CLASSES_ROOT\VisualBasic.Project\shell\open\command

Значение по умолчанию в этом ключе содержит команду открытия для файлов vbp - На моем компьютере:

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

Таким образом, вы можете просто удалить "% 1" и другие двойные кавычки, чтобы получить ваш путь

0 голосов
/ 05 января 2012

Я не уверен, почему вы все равно возитесь с записями реестра Shell.

Вы должны иметь возможность использовать COM-интерфейс Shell32 или точки входа стандартного экспорта, чтобы вызывать глагол "make" для соответствующего файла.(как правило, .VBP).Либо перейдите к папке Folderitem .VBP и вызовите для нее метод InvokeVerb, либо вызовите ShellExecute / Ex, передав путь к файлу и глагол «make».

Нет необходимости в правописании реестра, и вы используете документированные API!

...