Vb.net 在一长串注册表项的末尾获取值

Vb.net 在一长串注册表项的末尾获取值,vb.net,registry,Vb.net,Registry,这是我第一次尝试在任何深度使用注册表,所以请容忍我 我编写与Excel和其他程序交互的小型VB.net程序,以生成复杂的报告。作为其中的一部分,我们有时必须与第三方DLL进行交互。由于这个DLL通常非常罕见,我们采取了“始终安装”策略,并在第一次启动时运行安装程序 现在我们有一个客户已经有了第三方应用程序,所以安装失败(应该如此)。但这让我试图找到DLL/应用程序的安装位置,以便正确调用它。在regedit中翻找(导致它反复崩溃)我发现它似乎是这样的 安装DLL会在HKEY\U CLASSES\

这是我第一次尝试在任何深度使用注册表,所以请容忍我

我编写与Excel和其他程序交互的小型VB.net程序,以生成复杂的报告。作为其中的一部分,我们有时必须与第三方DLL进行交互。由于这个DLL通常非常罕见,我们采取了“始终安装”策略,并在第一次启动时运行安装程序

现在我们有一个客户已经有了第三方应用程序,所以安装失败(应该如此)。但这让我试图找到DLL/应用程序的安装位置,以便正确调用它。在regedit中翻找(导致它反复崩溃)我发现它似乎是这样的

安装DLL会在
HKEY\U CLASSES\U ROOT
中生成一个名为
APLW.WSEngine
的条目,并在
HKEY\U LOCAL\u MACHINE\SOFTWARE\CLASSES\
中生成一个明显相同的副本。这些条目都包含一个
CLSID
,可以在
HKEY_CLASSES\u ROOT\Interface\[密钥]\TypeLib
中找到,还包含安装的各种子部分的条目。我还在
HKEY\U CLASSES\U ROOT\TypeLib\[密钥]
中找到它,这里有一个名为
\3.0\HELPDIR\
的密钥,其中包含我要查找的目录

所以

要在该
HELPDIR
键中查找值,或在任何键不存在的情况下获取
Nothing
”,我需要进行的最小调用次数是多少。最后,我要么需要这个路径,要么什么都不需要,如果软件还没有安装的话。目前,我反复调用注册表,依次查找每个条目和密钥,但我怀疑有办法链接它们


要使事情稍微复杂一些,路径中的
\3.0\
可能会更改,实际值位于原始
CLSID
条目中的
Version
键中。如果有一个简单的方法来添加它,我会使用它,但是因为我们只使用3.0(AFAIK),所以可以忽略它。

可能是1。也许更多。我不知道,这不是一个非常典型的问题(这可能是你被否决的原因),但我将假设你更多的是一个数字/报告人,而不是一个软件工程师。因此,从这个假设出发,我将尽力提供帮助,而不是指出任何违反礼仪的行为,并为您提供一些可能会有所帮助的资源

对于初学者,如何读取注册表值:

其次,vb.net中注册表类的完整技术规范:

两者都提供了大量的样品,应该可以帮助你一路前行。但请记住,在某些情况下和某些计算机设置中,这些类型的注册表调用可能需要您提升UAC权限,如果遇到这种情况,您可以尝试此资源,其中详细介绍了如何让您的应用程序了解UAC:


我希望这有帮助,祝你好运

谁投了反对票,谁能花几秒钟的时间说明原因,这样我下次就可以改进我的问题了吗?你能更详细地说明你所说的“不是很典型的布局”是什么意思吗?我试图提供我的步骤、进度和问题。好吧,如果你看一下提供的工具提示,否决票意味着此人没有表现出任何研究努力,或者问题令人困惑,或者问题没有用处。在我看来,你清楚地知道你需要做什么,一个格式良好的谷歌查询会让你在我提供给你的3个链接中的任何一个上着陆。再加上信息是现成的,这使得这个问题的“有用性”变得多余,因为问题已经得到了回答。令人困惑的部分可能也是一个因素,因为它非常冗长。啊,我以前从未见过这个功能。这很有用!等等,你怎么看工具提示?