我有一个编译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而不指定注册表中的位置?
感谢,
答案 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!