如何在不知道注册表路径vb6的情况下查找注册表值?

时间:2012-01-05 07:41:19

标签: vb6 registry

我有一个编译VB6代码的dll(用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 个答案:

答案 0 :(得分:2)

我认为(在标准安装中,如果用户没有更改默认值),以下注册表项将包含exe的路径:

HKEY_CLASSES_ROOT\VisualBasic.Project\shell\open\command

此键中的默认值包含vbp文件的打开命令 - 在我的机器上:

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

所以你可以删除“%1”和其他双引号来获取你的路径

答案 1 :(得分:2)

您可以从安装程序编写的注册表值中获取VB6安装文件夹:

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

在我的机器上,此值为C:\Program Files\Microsoft Visual Studio\VB98

有一个示例(C#)代码在我的BuilderPro项目中获取此路径。

答案 2 :(得分:0)

我不知道你为什么要搞乱Shell的注册表项。

您应该能够使用Shell32的COM接口或标准导出入口点来针对相应的文件(通常是.VBP)调用“make”动词。导航到.VBP的Shell Folderitem并在其上调用InvokeVerb方法或调用ShellExecute / Ex传递文件路径和“make”动词。

不需要注册表搜索,并且您正在使用文档化的API!